The previous version of Visual Studio used to default this to "Any CPU", which means that on a x86 machine you would always end up using x86, wheras on a x64 machine you would end up either running x64 or x86 depending on whether or not the process that the assembly is being loaded into was 32bit or 64bit.
The trouble is that when starting a new process a .Net exe built with the "Any CPU" option will end up as a 64 bit process rather than as a 32 bit process which can cause problems for 2 reasons:
- Any native modules compiled for x86 (i.e. most of them) will not load into your process any more (also the errors you got as a result of this were sometimes cryptic if you didn't know to look out for this problem).
- Also unless your application actually uses more than 4GB of address space (i.e. memory - note that the operating system no longer reserves the top 1-2GB of address space for 32 bit processes in a 64 bit OS), 64 bit code often performs worse than 32 bit code due to the increased pointer size.
As so few applications actually use enough address space (i.e. memory) to make the hassle worthwhile, the default was changed to x86 in order to avoid these problems.