我的 .NET 应用程序将如何在 Windows 2008 x64 下运行?作为 32 位应用程序还是 64 位应用程序?这有什么区别吗?
6 回答
如果它针对 64 位架构,或者设置为在任何平台上运行,它将运行 64 位。
如果它针对 32 位架构,它将运行 32 位。如果您需要使用本机 DLL,您需要确保它的目标正确。
这将与 64 位 Vista 相同。
如果您使用“在任何机器上运行”选项编译它,它将作为 64 位应用程序运行。
如果强制它编译为“以 32 位运行”,那么它将在 x64 机器上作为 32 位应用程序运行。
取决于您如何构建它,以及您应该如何构建它。:-) 如果您没有指定特定型号,那么您的应用程序将在 x86 上以 32 位运行,在 x64 上以 64 位运行。这通常是您想要的。当您在 64 位系统上与 32 位代码进行互操作时,会出现例外情况。例如,如果您调用一个期望“int”为 32 位的 DLL,而您将其传递为 64 位,那么事情很快就会出错。
编译到目标“任何”平台的.net 代码(查看项目构建配置)将从 IL 编译成 64 位机器代码指令。如果你指定 32bit 那么它会被编译成 32bit 然后转换成 32bit 机器码在 64bit OS 上运行!
编译成 64 位代码时,某些库存在一些兼容性问题。
编辑:XNA 是您希望专门针对 32 的示例,请查看: http ://www.brianpeek.com/blog/archive/2007/11/13/x64-development-with-net.aspx
注意:无论在什么平台上运行,Int 都是 int?不是吗?
在我的问题和答案之后,我会三思而后行是否允许应用程序以 64 位运行。与更成熟的 32 位 JIT 相比,64 位 JIT 似乎真的很有限。
如果它是一个 ASP.Net 应用程序,您可以将 IIS 配置为在我们的 webapp 的应用程序池上“启用 32 位应用程序”,这样它将模拟 32 位。
所以,最后一个问题是“取决于”