“首选32位”编译器标志对Visual Studio(C#,VB)意味着什么?

时间:2011-09-22 02:40:47

标签: c# vb.net compiler-flags visual-studio-2012

刚安装了Visual Studio 11开发人员预览版。在编译指定了AnyCPU目标的托管(C#,VB)应用程序时,我在项目属性中看到一个名为“Prefer 32-bit”的新选项。这似乎不是类库的选项,只是顶级应用程序。

这个标志表示什么?

4 个答案:

答案 0 :(得分:13)

它可能表明应用程序是AnyCpu但是当32位可用时,它应该如此运行。这是有道理的 - 64位应用程序使用更多内存,有时你不需要内存空间;)

答案 1 :(得分:3)

修改 使用"任何32位首选的CPU"编译的应用程序与x86,x64和ARM兼容,而x86仅与x86,x64兼容,而不与ARM兼容。有关详细信息,请参阅this

答案 2 :(得分:1)

What AnyCPU Really 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位首选”应用程序将成功运行。"

答案 3 :(得分:0)

这里是正确而简单的答案:

Application arch.