我们有一个MVC应用程序,它依赖于许多第三方产品(例如,Crystal,Topaz)。 Topaz签名设备只有32位.dll可用。所以我假设我需要在一个32位的App Pool中在IIS 7上构建和部署应用程序。
如果这个假设是正确的,那么我是否需要使用VS2008编译器设置为“x86”来构建MVC应用程序(现在我正在使用“任何CPU”?
此外,所有引用的程序集也需要是32位吗?如果是这样,我如何将32位MVC文件放到x64 Server 2008上?
最后,我如何使inetpub /目录x86友好,或者由于其他原因而神奇地发生?
答案 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友好,或者那样做 神奇地发生了 别的什么?
它只是神奇地发生。