如何构建具有32位程序集的C#MVC应用程序以在x64 Server 2008上运行

时间:2010-01-28 15:59:57

标签: .net 32bit-64bit

我们有一个MVC应用程序,它依赖于许多第三方产品(例如,Crystal,Topaz)。 Topaz签名设备只有32位.dll可用。所以我假设我需要在一个32位的App Pool中在IIS 7上构建和部署应用程序。

如果这个假设是正确的,那么我是否需要使用VS2008编译器设置为“x86”来构建MVC应用程序(现在我正在使用“任何CPU”?

此外,所有引用的程序集也需要是32位吗?如果是这样,我如何将32位MVC文件放到x64 Server 2008上?

最后,我如何使inetpub /目录x86友好,或者由于其他原因而神奇地发生?

3 个答案:

答案 0 :(得分:1)

如果您的MVC应用程序以32位运行,这是否重要?或者你有一个令人信服的理由试图去64位吗?

如果您可以使用32位,请将所有程序集作为x86进行压缩。在x64服务器2008上配置IIS时,请确保更新应用程序池中的“高级设置” - 设置“启用32位应用程序”为true。

帕特里克

答案 1 :(得分:1)

  

如果这个假设是正确的,那么就做   我需要用它来构建MVC应用程序   VS2008编译器设置为“x86”   (现在我正在使用“任何CPU”?

您可以将其设置为任何CPU,它将以32位或64位运行,具体取决于您的应用程序池设置,并且只要您的其他相关dll也使用“任何CPU”进行编译

  

此外,执行所有引用的程序集   需要32位吗?如果是这样,怎么样   将32位MVC文件放到x64上   Server 2008?

如果您使用的是非托管代码(或引用程序集),则需要获取该程序集的特定32位和64位版本。如果您有32位程序集,并且在应用程序池中启用了32位应用程序,它们将会以WoW64模式运行

另一个参考:http://blogs.msdn.com/gauravseth/archive/2006/03/07/545104.aspx

如果你有x64版本,它们将原生运行为64位

  

Topaz签名设备只有   32位.dlls可用。所以我想   我需要构建和部署   IIS 7中的应用程序位于32位应用程序池中。

你是如何验证的?你用过Corflags.exe吗?您可以了解更多信息here。无论您的PE标头(PE32或PE32 +)如果您的32BIT设置为0,您都可以在64位应用程序池上运行它。即使它设置为1并且如果它没有签名,您可以将其设置为0(但可能不值得承担风险)并在64位应用程序池上运行

答案 2 :(得分:0)

  

如果这个假设是正确的,那么就做   我需要用它来构建MVC应用程序   VS2008编译器设置为“x86”   (现在我正在使用“任何CPU”?

是的,完全正确。

  

此外,执行所有引用的程序集   需要32位吗?如果是这样,怎么样   将32位MVC文件放到x64上   Server 2008?

如果这些程序集构建为任何CPU,则不需要,只要您的条目程序集为32位,.Net框架就会将其解析为32位。

  

最后,如何制作inetpub /   目录x86友好,或者那样做   神奇地发生了   别的什么?

它只是神奇地发生。