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