下面是確切的場景。我有一個來自第三方供應商的x86彙編,我想用NServiceBus。但是,當NServiceBus嘗試掃描程序集時,我很快就會遇到級聯的BadImageFormat異常。這是我可以通過使用x86版本的NServiceBus修復的,但後來我必須更改所有其他引用的庫來執行相同的操作,其中一些依賴於x64程序集。x86與x64 .NET Framework庫的IL有任何區別嗎?
我能想出的最簡潔的解決方案是使用corflags.exe將第三方程序集修改爲AnyCPU。這樣我就不必修改任何其他許多引用的庫爲x86。到目前爲止,這是完美的。
但是,我已經被警告過,如果第三方庫引用任何在x86和x64中具有不同實現的庫,那麼這可能是一個問題。
所以我的問題是,在x86和x64 .NET Framework庫的IL中是否有任何區別,例如,System。* x64的IL等於System。* x86的IL?
據我所知,平臺目標只是開發人員設置的首選項,並不會影響實際產生的IL;使用corflags.exe轉換第三方程序集的解決方案應該是安全的,只要.NET Framework在x64和x86程序集中也使用相同的IL。是這樣嗎?
根據註釋的問題:第三方庫引用(我知道這從反編譯的第三方庫)
- 系統
- System.Runtime.Serialization
- System.Runtime.Serialization
- mscorlib程序
- (它們的依賴)
並且所有版本是4.0.0.0。
您被警告說第三方庫可能存在問題,之後您會詢問System.Collections。是System.Collections第三方庫爲你? – mybirthname
您是否可以不用將項目解決方案更改爲'AnyCPU'與使用corflags.exe相比,您還在4.0或4.5下運行項目的哪個版本.net? – MethodMan
@MethodMan:不,我得到一個BadImageFormat異常,如果我將項目解決方案更改爲x86以外的任何東西。我正在.NET 4.5下運行該項目。 – exceptionerror