una tengo saber reinstalar que puedo pudo posterior plataforma net microsoft intente instalar instalado inicializar framework este equipo desinstalar debo control como aparece actualización .net version executable

tengo - no se pudo inicializar microsoft.net framework 4.0 intente reinstalar la plataforma



¿Cómo saber qué versión de.NET Framework necesita ejecutar un ejecutable? (9)

Tengo un archivo ejecutable, y me gustaría saber qué versiones de .NET Framework se necesita para iniciar este archivo.

¿Hay alguna manera fácil de encontrar esta información en alguna parte?

(Hasta ahora probé ILDASM y DUMPBIN sin suerte).


Ahora puede usar ILSpy para examinar el marco de destino de un ensamblaje. Después de cargar el ensamblaje, haga clic en la raíz del nodo de ensamblaje y podrá encontrar la información en la declaración TargetFramework:

[assembly: TargetFramework(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]


Creo que lo más cercano que puede obtener confiablemente es determinar qué versión de CLR se requiere. Puede hacerlo utilizando ILDASM y mirando el nodo "MANIFEST" o Reflector y mirando la vista de dissembly del nodo "Application.exe" como IL. En ambos casos, hay un comentario que indica la versión de CLR. En ILDASM, el comentario es "// Versión de metadatos" y en Reflector el comentario es "Versión de tiempo de ejecución de destino".

Aquí hay ejemplos de una aplicación .NET WinForms llamada WindowsFormsApplication1.exe:

ILDASM:

// Metadata version: v2.0.50727 .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z/V.4.. .ver 2:0:0:0 } .assembly extern System { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z/V.4.. .ver 2:0:0:0 }

Reflector:

.module WindowsFormsApplication1.exe .subsystem 0x0002 // MVID: {CA3D2090-16C5-4899-953E-4736D6BC0FA8} // Target Runtime Version: v2.0.50727

También puede consultar la lista de conjuntos referenciados y buscar la referencia con el número de versión más alto.

De nuevo, usando ILDASM mirando los datos del nodo "MANIFEST":

.assembly extern System.Drawing { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .ver 2:0:0:0 } .assembly extern System.Core { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z/V.4.. .ver 3:5:0:0 }

Y usando Reflector, mirando la dissambly (todavía como IL) para cada referencia enumerada:

.assembly extern System.Core { .ver 3:5:0:0 .publickeytoken = (B7 7A 5C 56 19 34 E0 89) }

Al encontrar la referencia con los metadatos de la versión más alta, puede determinar de qué versión del Framework proviene esa referencia, lo que indicaría que necesita la misma versión del Framework instalado para que se ejecute la aplicación. Una vez dicho esto, no lo trataría como 100% confiable, pero no creo que vaya a cambiar pronto.


Desde el código, puede usar Assembly.ImageRuntimeVersion pero al mirar el archivo, probablemente lo mejor sea utilizar el reflector y ver a qué versión de mscorlib está haciendo referencia.

Editar: Aún mejor sería usar ildasm , abrir su ensamblaje y luego ver el manifiesto para el ensamblaje. La primera línea del manifiesto le indicará la versión exacta de CLR para la que se creó el ensamblado.


Desde la línea de comandos: find "Framework" MyApp.exe


En Linux / OSX / Unix puede usar:

strings that_app.exe | grep ''v2./|Framework''


O simplemente puede averiguar qué referencia de System.Core tiene. Eso le dirá la versión de .NET Framework que está usando esta aplicación. Para 2.0, la versión de System.Core será 2.0.xxx.xxx. Para 3.5, la versión será 3.5.xxx.xxx, etc.


Puede usar una herramienta llamada CorFlags.exe. Ha existido desde .NET 2.0, y estoy seguro de que está incluido en Windows SDK 7.0. De forma predeterminada (en Windows XP Pro) está instalado en C: / Archivos de programa / Microsoft SDKs / Windows / v7.0A / bin / CorFlags.exe. Proporcione la ruta del archivo a un módulo administrado (sin ningún otro indicador de línea de comandos) para mostrar su información de encabezado, que incluye la versión.

Tenga en cuenta que esta utilidad está diseñada para modificar el encabezado PE32 de un módulo, por lo tanto, no use ninguno de los indicadores hasta que lea la documentation cuidadosamente.


Un enfoque más simplificado sería usar dotPeek y ver lo que aparece en el árbol.

Ver el panel de propiedades:


Usando el Notepad , tres décadas de edad, 200 kb de tamaño, herramienta preinstalada:

  • abrir la aplicación con el notepad appname.exe ,
  • buscar palabra "marco",
  • repita la última búsqueda con F3 hasta que .NET Framework,version=vX.Y
  • si no encuentra nada (versiones inferiores a 3.0) busque v2. ... todavía 100 veces más fácil que la instalación de gigabytes de herramientas de análisis de punto neto y estudios de basura.

Cualquier otro editor / visor puede abrir binarios también, como Notepad ++ o el gran lector de texto / visor hexadecimal de lister .