I need to determine programmatically whether an assembly is x86, x64 or AnyCPU? There is an almost identical question, but the solution that it provides
Assembly assembly = Assembly.LoadFrom(fileName);
PortableExecutableKinds peKind;
ImageFileMachine imageFileMachine;
assembly.ManifestModule.GetPEKind(out peKind, out imageFileMachine);
fails when trying to load a 64-bit assembly from a 32-bit process (and vice versa).
Is there a foolproof way of programmatically finding out the compilation type of an assembly?
EDIT: Based on @BenVoigt suggestion, I created a small command line utility that checks whether the DLL is managed or not and whether its x86/x64/AnyCPU. I hope someone finds it useful.
ReflectionOnlyLoadFrom
? – Ben Voigt