Microsoft.NET \ Framework和Microsoft.NET \ Framework64有什么区别?

时间:2010-12-28 10:36:56

标签: .net 64-bit 32bit-64bit 32-bit

我想知道.NET模式x86和x64之间的区别。

  1. 两种模式有什么区别?

  2. 我可以编译我的库,例如使用.NET x64和.NET x86吗?

  3. 如果选择x64而不是x86,对我来说会有什么不同吗?

  4. .NET x64有什么优势?

  5. 如果我想使用.NET x64,是否必须安装任何特殊内容?

3 个答案:

答案 0 :(得分:14)

复杂的问题,我会尽量简化:

  1. 可以同时为x86(32位)和x64(64位)编译任何.Net应用程序。实际上他们默认做。您可以通过在项目属性中的“生成”选项卡中更改目标CPU来更改此设置。支持的目标是“Any”(根据操作系统支持将Just-In-Time编译为32或64位),“x86”将编译为32位,适用于所有平台,“x64”将编译为64 -bit仅适用于64位平台。

  2. 是。往上看。还要注意,有时会执行第二级编译,那就是NGEN。它为特定CPU类型创建本机映像。但是,如果你搞砸了这个,你就知道了。

  3. 对于.dll,为他们选择“任何”CPU。对于.EXE(入口点),您必须选择Any,x86或x64。有一些事情需要考虑:x86 .Net应用程序访问本机Windows .dll文件(插入)需要x86 .dll文件。因此,64位应用程序无法访问32位API调用,反之亦然。这通常是.Net应用程序在64位操作系统上失败的原因。解决这个问题的方法是引用正确的.dll或者只是将.Net应用程序设置为属性下的x86(32位)。如果它们设置为“Any”,则所有其他依赖项将在即时编译期间自动变为32位。

  4. 64位的优点很复杂。根据您的应用程序的作用,有优点和缺点。最明显的优势是您的应用程序可以打破2GB内存屏障。缺点是在#3中解释,如果您引用64位.dll,您的应用程序将无法在32位操作系统上执行。

  5. 一切都是开箱即用的。除了以上所有内容之外,不要担心任何事情。 :)

答案 1 :(得分:0)

  1. 如果您正在编译 Any CPU 的代码,x64会尝试将本机外部DLL加载为x64版本。如果该DLL是32位,那可能会有问题。它抛出异常。
  2. 是的,您可以将其构建为任何CPU
  3. 秒。 1
  4. 它(可以)在内部使用操作系统的x64优点,如4GB +内存等。
  5. 不,默认情况下由.NET安装程序完成。

答案 2 :(得分:0)

  1. 有32位或64位平台(操作系统)的模式
  2. 是的,你可以 - 实际上VS在x86计算机上安装32位版本的CLR,在64位Windows上安装32位和64位(两者)版本的CLR。由于VS是32位应用程序,因此它在64位计算机上运行在WOW64下。
  3. 许多应用程序在32位CLR和64位CLR上的行为相同。但是,可能存在一些差异(例如,使用Int32而不是IntPtr的不正确的平台调用)
  4. 与64位操作系统与x86操作系统的优势相同
  5. 如果您使用的是64位Windows和VS2010,那么您就拥有了开发所需的一切.net x64