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

tru*_*ker 11 .net 64-bit 32-bit 32bit-64bit

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

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

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

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

  4. .NET x64的优势是什么?

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

Ted*_*sen 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",则所有其他依赖项将在Just-In-Time编译期间自动变为32位.

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

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