2010-01-28 54 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友好,或者這是否 神奇地出現爲 別的結果?

它只是神奇地發生。

相關問題