"Any CPU" is a right option. Is is a default and
not an alternative of .NET. You will see the options when you get to the properties: Project Properties => "Build" Tab => Platform Target.
Look at the CPUs in the list. There are three distinct CPU architectures currently supported by Visual Studio:
x86: 32-bit CPU, see
http://en.wikipedia.org/wiki/X86[
^].
Itanium: original 64-bit IA-64 Intel architecture, see
http://en.wikipedia.org/wiki/Itanium[
^].
x64: In fact, x86-64 64-bit CPU architecture pushed by AMD and adopted by Intel, much cheaper then Itanium and of less performance; most popular 64-bit architecture, see
http://en.wikipedia.org/wiki/X86-64[
^].
The hardware architecture is most important. You can run an application compiled in .NET on Linux with Mono (more exactly, if some standard sub-set of .NET libraries is used), but CPU architectures much match.
All those platforms are incompatible, but on every of the 64-bit platforms a 32-bit application can run on the platform called WoW64, see
http://en.wikipedia.org/wiki/WoW64[
^].
The IL code is not machine code (it is created during run-time, JIT-compiled on the per-method basis), so the CPU architecture could be determined later, when the application is being loaded. In this way, universal "Any CPU" is possible. It should always be preferred unless unmanaged library of certain architecture is used in the process.
When "Any CPU" is selected for all assemblies of the application, the platform is automatically defined by the OS, most advanced on is used (that is, not WoW64 in a 64-bit platform). When for all assemblies "Any CPU" is selected but for an assembly of the application some concrete hardware architecture is selected (that is, other than "Any CPU"), then for other assemblies are loaded with the platform defined by the platform of the assembly of the application.
—SA