32位.NET应用程序和64位.NET应用程序之间有区别吗?

Jac*_*Lee 22 .net c#

我的理解是.NET应用程序是独立于平台的,因此纯.NET代码应该在x86或64位机器上运行.除非您的.NET代码调用某些本机代码,否则它依赖于平台.真的吗?

Row*_*haw 16

.NET应用程序可以编译为定位x86,x64或"Both".通常,如果您依赖于其他平台无法使用的COM控件等,则只针对一个平台.


Ade*_*ger 9

您的代码可以编译为完全独立于平台,或者您可以定位特定平台.标准建议是使库架构中立(即"任何CPU")并将x86作为可执行文件的目标.这里解释了Visual Studio 2010默认使用此方法的原因:AnyCPU可执行文件通常比它们的价值更麻烦:

  1. 以两种非常不同的模式运行(x64和x86)会增加产品复杂性和测试成本.
  2. 无论如何,32位往往更快(稍微)一点.
  3. 某些功能在x64中不可用.
  4. 如果超过4 GB的地址空间是有用的,那么正确的做法是针对x64并避免支持两个平台的成本.

当然,如果您只是针对x86,那么您的代码仍将在x64到WoW64上运行.