Can I find whether a .NET assembly has been specifically build for 32 or 64 bits using Mono.Cecil? Or any other way of finding out without having to load the assembly first.
Using mono-ceci, you can do this (the information is available module by module):
AssemblyDefinition asm = AssemblyFactory.GetAssembly("myassembly.dll");
foreach (ModuleDefinition module in asm.Modules)
{
Console.WriteLine("Module " + module.Name);
Console.WriteLine("IsPE64 " + module.Image.PEOptionalHeader.StandardFields.IsPE64);
}