2010-11-15 13 views

Respuesta

1

Tratando de averiguar mediante la carga de la asamblea es una propuesta de la gallina y el huevo. Si no obtiene una BadImageFormatException, entonces el arco es apropiado y ya no le importa qué es. Si obtiene la excepción, la configuración del programa es incorrecta. Nada que puedas hacer al respecto en el código.

+0

menos por supuesto que utiliza 'ReflectionOnlyLoadFrom'. http://stackoverflow.com/q/9470199/103167 –

9

Suponiendo que solo está mirando conjuntos .net, puede usar CorFlags.exe para ver el encabezado de la imagen.

This blog post explica el uso para determinar cómo leer los resultados. Extracto:

Uso: Asamblea Corflags.exe [opciones]

Si no se especifican opciones, se muestran las banderas de la imagen dada.

...

Esto es lo que cada componente de la cabecera significa:

Versión: contiene la versión de .NET Redist con la que el binario es construido.

CLR Encabezado: 2.0 indica una imagen .Net 1.0 o .Net 1.1 (Everett) mientras que 2.5 indica una imagen .Net 2.0 (Whidbey).

CorFlags: Esto se calcula mediante indicadores específicos OR'g para indicar si la imagen es ILONLY, etc su valor de bits y es utilizado por el cargador. ILONLY: las imágenes administradas pueden contener el código nativo . Para ser "anycpu" una imagen debe contener solo IL.

32BIT: Incluso si usted tiene una imagen que sólo contiene IL aún podría tener dependencias plataforma, la bandera 32bit se utiliza para distinguir “x 86” imágenes a partir de imágenes “Cualquier CPU”. Las imágenes de 64 bits se distinguen por el hecho de que tienen un tipo de PE PE32 +.
El aspecto más interesante es el PE y el indicador 32BIT del encabezado. Estos se combinan para especificar los tipos de ensamblaje .Aquí es cómo se verían como para:

  • Cualquier CPU: PE = PE32 y 32BIT = 0
  • x86: PE = PE32 y 32BIT = 1
  • 64 bits: PE = PE32 + y 32BIT = 0
+0

Qué es mejor: 1) AssemblyName.ProcessorArchitecture, 2) CorFlags.exe (y Parser C# - Process.Start), 3) ApiChange https: //apichange.codeplex. com/o 4) lector de PE http://stackoverflow.com/a/9767750/206730? – Kiquenet

+0

Instalo VS 2008, VS 2010, VS 2012 y VS 2013. Tengo 8 archivos CorFlags.exe en subcarpetas en C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \. ¿Cuál debería ser el uso? – Kiquenet

Cuestiones relacionadas