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

时间:2012-02-07 13:40:51

标签: c# .net

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

4 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:9)

您的代码可以编译为完全独立于平台,也可以针对特定平台。标准建议是使库架构中立(即“任何CPU”)并将x86作为可执行文件的目标。默认情况下,Visual Studio 2010使用此方法的原因如下所述:AnyCPU executables are usually more trouble than they're worth

  
      
  1. 以两种截然不同的模式运行(x64和x86)会增加产品复杂性和测试成本。
  2.   
  3. 无论如何,32位往往会更快(一点点)。
  4.   
  5. x64中没有某些功能。
  6.   
  7. 如果超过4 GB的地址空间有用,那么正确的做法是将 x64作为目标,并避免支持两个平台的成本。
  8.   

当然,如果您只是定位x86,那么您的代码仍会在x64到WoW64上运行。

答案 2 :(得分:3)

是的,你说的是真的。纯.NET代码是独立于平台的(Visual Studio中的“任何CPU”),除非使用外部库(据我所知COM和P/Invokes)。然后,您的平台必须与用于构建外部库的平台匹配。

答案 3 :(得分:0)