How to Tell if a .NET Assembly Was Compiled as x86, x64 or Any CPU
.net, visual-studio, x86-64
Solution
If you just want to find this out on a given dll, then you can use the CorFlags tool that is part of the Windows SDK:
CorFlags.exe assembly.dll
If you want to do it using code, take a look at the GetPEKind method of the Module class:
Assembly assembly = Assembly.LoadFrom("path to dll");
PortableExecutableKinds peKind;
ImageFileMachine imageFileMachine;
assembly.ManifestModule.GetPEKind(out peKind, out imageFileMachine)
You then need to examine the `peKind` to check its value. See the MSDN docs for `PortableExecutableKinds` for more info.
Problem
What's the easiest way to discover (without access to the source project) whether a .NET assembly DLL was compiled as 'x86', 'x64' or 'Any CPU'? Update: A command-line utility was sufficient to meet my immediate needs, but just for the sake of completeness, if someone wants to tell me how to do it programmatically then that would be of interest too, I'm sure.