我有一個針對.NET 2.0編寫的現有C#應用程序,目標是AnyCPU。它目前引用了一些第三方.NET DLL,我沒有它的源代碼(我不確定它們是否爲x86,x64或AnyCPU構建)。在構建64位窗口時針對x86與AnyCPU操作系統
如果我想在64位Windows操作系統上專門運行我的應用程序,那麼我應該定位哪個平臺以使我的應用程序無錯地運行?我當時的理解是目標:
- :如果至少有一個第三方的.NET的DLL是專爲x86或使用P/Invoke來的Win32 DLL的接口。應用程序將在32位和64位操作系統上以32位模式運行。
- x64:如果所有第三方.NET dll已經爲x64或AnyCPU構建。應用程序只能在64位操作系統中運行。
- AnyCPU:如果所有第三方.NET dll已經爲AnyCPU構建。應用程序將在32位操作系統上以32位模式運行,在64位操作系統上以64位運行。
而且,我是有權認爲,雖然針對AnyCPU將產生沒有錯誤構建應用程序中引用第三方的x86 .NET的DLL時,應用程序將引發運行時異常時,它會嘗試在運行時加載這些DLL在64位操作系統上。
因此,只要我的第三方DLL中的一個正在執行p/Invoke或x86,我只能針對此應用程序的x86目標?
AnyCPU是我的VS實例的默認目標平臺,當你除了.NET框架之外沒有其他的依賴關係時,這是毫無疑問的。一旦引入了其他依賴關係,則假定應用程序將繼續在64位平臺上工作,僅僅是因爲應用程序針對AnyCPU並編譯沒有問題,這將是一件痛苦的事情。謝謝回答 :) – anonymous 2010-06-01 05:37:49