刚刚安装了 Visual Studio 11 开发者预览版。在编译指定 AnyCPU 目标的托管(C#、VB)应用程序时,我在项目属性中看到一个名为“首选 32 位”的新选项。这似乎不是类库的选项,只是顶级应用程序。
这个标志表示什么?
刚刚安装了 Visual Studio 11 开发者预览版。在编译指定 AnyCPU 目标的托管(C#、VB)应用程序时,我在项目属性中看到一个名为“首选 32 位”的新选项。这似乎不是类库的选项,只是顶级应用程序。
这个标志表示什么?
它可能表明该应用程序是 AnyCpu,但当 32 位可用时,它应该这样运行。这是有道理的 - 64 位应用程序使用更多内存,有时您只是不需要内存空间;)
编辑: 使用“任何 CPU 32 位首选”编译的应用程序与 x86、x64 和 ARM 兼容,而 x86 仅与 x86、x64 兼容,而不与 ARM 兼容。有关详细信息,请参阅此。
What AnyCPU Real Means As Of .NET 4.5 and Visual Studio 11中有一篇很好的文章。
对您的问题的简短回答是“当使用 AnyCPU 的那种风格时,语义如下:
如果进程在 32 位 Windows 系统上运行,则它作为 32 位进程运行。IL 被编译成 x86 机器码。如果进程在 64 位 Windows 系统上运行,则它作为 32 位进程运行。IL 被编译成 x86 机器码。如果进程在 ARM Windows 系统上运行,它将作为 32 位进程运行。IL 被编译为 ARM 机器码。那么,“任何 CPU 32 位首选”和“x86”之间的区别仅在于:编译为 x86 的 .NET 应用程序将无法在 ARM Windows 系统上运行,但“任何 CPU 32 位首选”应用程序将无法运行将成功运行。”