Compatibility between 32-bit, 64-bit and “Any CPU” .NET assemblies
I couldn’t find any decent .NET platform target compatibility chart, so I made one:
It’s all rather self explanatory. Green combinations, like an “Any CPU” exe file and an x86 DLL on a 32-bit OS, are compatible. Red are incompatible. The Combined Chart shows which combinations are red or green on both 32- and 64-bit OSes, while the grey fields denote combinations that differ between 32- and 64-bit OSes. I’ve completely ignored the Itanium platform target and so does everyone else these days. It’s not even an option in Visual Studio 2012.
When to select a specific platform target
Basically, the need to select another platform target than “Any CPU” arises when your assembly uses native (unmanaged) code. For a good, concise explanation of the often misunderstood platform target option in Visual Studio, I recommend DSTOKES article at Visual Studio Hacks.
As the current tablet frenzy has forced MS to stop neglecting the ARM platform, I suspect that we’ll soon see it added to the list of targets.