Answers:
微软有一个博客条目,从.NET 4.5和Visual Studio 11开始,AnyCPU的真正含义:
在.NET 4.5和Visual Studio 11中,奶酪已被移动。对于大多数.NET项目,默认值仍然是AnyCPU,但是AnyCPU现在有多个含义。有一个附加的AnyCPU子类型,“首选任何32位CPU”,这是新的默认设置(总体而言,/ platform C#编译器开关现在有五个选项:x86,Itanium,x64,anycpu和anycpu32bitpreferred )。当使用AnyCPU的“首选32位”格式时,语义如下:
- 如果该进程在32位Windows系统上运行,则它将作为32位进程运行。IL被编译为x86机器代码。
- 如果该进程在64位Windows系统上运行,则它将作为32位进程运行。IL被编译为x86机器代码。
- 如果该进程在ARM Windows系统上运行,则它将作为32位进程运行。IL被编译为ARM机器代码。
那么,“任何CPU 32位首选”和“ x86”之间的区别仅在于:编译为x86的.NET应用程序将无法在ARM Windows系统上运行,而“任何CPU 32位首选”应用程序将成功运行。
Project -> Properties -> Build tab -> Platform target
...,但是请注意,该AnyCPU-32bitPreferred
功能仅在.Net 4.5及更高版本中可用。这就是默认值为的原因AnyCPU
。
原因是:如果您不想在64位应用程序中使用更多的内存。这意味着,如果您的应用程序是AnyCPU,则希望以32位运行。
要添加更多内容,Visual Studio中的设置将针对特定的CLR:
Visual Studio在x86计算机上安装CLR的32位版本,并在64位Windows计算机上安装CLR的32位版本和适当的64位版本。(因为Visual Studio是32位应用程序,所以当它安装在64位系统上时,它将在WOW64下运行。)