我应该何时使用/ platform:x64编译我的c#代码

时间:2014-08-06 14:44:43

标签: c# 64-bit anycpu

阅读Microsoft针对/ platform的不同选项的解释,我发现当我使用/ platform:anycpu时,它将在32位系统上运行为32位应用程序,在64位系统上运行为64位。

那么我为什么要强迫它使用例如x64?

有没有理由让人们使用其他选择?

3 个答案:

答案 0 :(得分:1)

必须重要且有用的不同之处在于内存管理。 x86应用程序无法分配超过4GB的RAM。但x64应用程序可以。还有:

与CLR执行时如何执行代码有关。请记住,CLR会动态编译代码,而首先要求将IL代码组装成机器代码然后进行缓存(这就是为什么第一次访问应用程序的速度较慢的原因)。现在,如果选择x86,则标记您的应用程序将在x86处理器上运行的代码,因此CLR可以使用专用于该类型处理器的汇编程序函数(具有性能优势)。如果您选择x64,其中寄存器更大,并且有新的x64功能可以加速您的应用程序,也会发生同样的情况。 如果选择“任意”,CLR将不使用任何CPU特定功能,并将保持标准指令集。

参考:Project setting CPU: x86, x64, Any CPU

希望这有助于理解。

答案 1 :(得分:0)

当你尝试加载用c ++制作的dll时,这很重要。我有一个特殊情况,当我在x64或任何CPU中编译时无法执行我的程序,但它在32位工作正常。

在其他情况下为ASP.Net页面创建一个dll。如果以32位编译它,则必须配置IIS以正确加载它们。

答案 2 :(得分:0)

当您编写应该只在64位操作系统上执行的应用程序时。即当它被jitted时你出于某种原因需要64个本机代码。

一个原因是您希望加载仅64位的原生dll,它无法加载到32位进程中。例如它不是.net dll。