2010-01-28 33 views
3

我们拥有一个取决于多个第三方产品(例如Crystal,Topaz)的MVC应用程序。 Topaz签名设备只有32位.dlls可用。所以我假设我需要在32位App Pool中构建和部署IIS 7上的应用程序。如何使用32位程序集来构建C#MVC应用程序以在x64 Server 2008上运行

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

另外,不要所有的引用程序集还需要32位?如果是这样,如何获得32位MVC文件到x64 Server 2008上?

最后,如何使inetpub /目录x86变得友好,或者是否奇迹般地发生作为其他内容的结果吗?

回答

1

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

您可以将其设置为任何CPU,它将在32位或64位运行,这取决于你的应用程序池设置,只要你的其他相关DLL也与“任何CPU”

还编,做所有引用的程序集 也需要是32位的?如果是这样,我如何获得32位MVC文件到x64 Server 2008?

如果使用非托管代码(或引用程序),你需要assembly.If你有32个组件来获得的,具体的32位和64位版本,如果你能在你的应用程序池32个应用程序,他们将了WoW64模式下运行

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

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

黄玉签名设备只有 32位.dlls可用。所以我假设 ,我需要在32位App Pool中在IIS 7上构建和部署 应用程序。

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

+0

谢谢Ram。 R U说,即使我编译我的应用程序为x86,但在服务器上安装了Microsoft x64位MVCx.dlls,那么我的32位应用程序DLL会愉快地找到并使用64位Microsoft DLL? – Dale 2010-01-28 17:27:24

+0

不。如果该应用程序编译为x86,并且该引用是x86或任何CPU,则表示您没有问题。但是,如果参考是x64,那么您有麻烦了。另一方面,如果您的所有引用都是托管代码(使用ANY CPU)/设置为64位,则我建议您使用corflags.exe – ram 2010-01-28 17:56:23

+0

检查标头,但不需要在应用程序池中启用“32位应用程序”。您将马上获得64位的好处,无需任何调整 – ram 2010-01-28 17:59:16

1

如果您的MVC应用程序以32位的方式运行,这有什么关系吗?或者您是否有充足的理由去尝试使用64位?

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

帕特里克

0

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

是的,完全正确的。

而且,做的所有引用的程序集 也需要是32位的?如果是这样,我如何获得32位MVC文件到x64 Server 2008?

没有必要,如果那些程序集是作为任何CPU构建的,那么.Net框架将把它解析为32位,只要你的入口程序集是32位。

最后,我怎么做的Inetpub/ 目录的x86友好,或者这是否 神奇地出现为 别的结果?

它只是神奇地发生。

相关问题