2009-06-07 45 views
6

假設我有一個需要在x86和x64平臺上運行的.Net Framework 3.5 SP1/CLR 2.0應用程序。假設無論什麼原因,我需要創建單獨的x86和x64安裝程序。將程序集編譯爲x64有什麼好處嗎?

因爲無論如何,我有一個特定於x64的安裝程序,將應用程序本身重新編譯爲x64而不是定位「AnyCPU」會有什麼好處嗎?

除了生成的程序集的頭信息之外,是否將目標設置爲x64還會改變任何內容?

+0

(已刪除標記程序集,因爲幾乎所有帶該標記的消息都是關於彙編程序的,而不是.NET程序集) – 2009-06-07 19:38:46

回答

4

如果指定了x64,它會更改程序的某些默認存儲器設置,使其在具有較大存儲器壓力的程序中稍微更具性能。使用x64編譯時會分配更大的線程堆棧(link

2

只要你不是Ngen任何程序集,最好留下來作爲「AnyCPU」,讓JIT的目標是體系結構。

1

我發現比當我包裝本地x86 dll包裝程序集需要爲x86平臺編譯,否則我得到一個x64機器上引發的BadImageFormatException。然後它就會變成雪球,因爲引用該程序集的所有程序集也需要爲x86平臺編譯。

這可能是我只是做錯了什麼,但這是我發現的。如果我不使用本地dll,那麼我會將所有程序集都保留爲「AnyCPU」。

0

我對.NET程序集知之甚少,但一般來說,如果您知道某個程序只能在x64架構中執行,請在x64機器代碼中編譯它,您將獲得一些性能提升,並且您將什麼都不會丟失(只要您已經知道它只會在x64環境中執行)。