Necesito determinar mediante programación si un ensamblado es x86, x64 o AnyCPU? Hay una casi idéntica question, pero la solución que proporciona¿Cómo verificar programáticamente si un ensamblado administrado es x86, x64 o AnyCPU?
Assembly assembly = Assembly.LoadFrom(fileName);
PortableExecutableKinds peKind;
ImageFileMachine imageFileMachine;
assembly.ManifestModule.GetPEKind(out peKind, out imageFileMachine);
falla al intentar cargar un conjunto de 64 bits a partir de un proceso de 32 bits (y viceversa).
¿Existe una forma infalible de encontrar programáticamente el tipo de compilación de un ensamblaje?
EDITAR: Basado en la sugerencia de @BenVoigt, creé un small command line utility que comprueba si la DLL se gestiona o no y si es x86/x64/AnyCPU. Espero que alguien lo encuentre útil.
¿Has probado ['ReflectionOnlyLoadFrom'] (http://msdn.microsoft.com/en-us/library/system.reflection.assembly.reflectiononlyloadfrom.aspx)? –
@BenVoigt Es muy probable que sea una respuesta, no un comentario :) – dasblinkenlight
@BenVoigt Lo hice ahora y tiene toda la razón. Conviértalo en la respuesta y lo aceptaré. – AngryHacker