2011-01-31 49 views
0

我有一個第三方庫,可以在32位或64位.dll下載。我的開發機器正在運行32位Windows 7.我的目標生產機器正在運行64位Windows Server 2008 R2。我的項目解決方案目前以任何CPU模式構建。如何在處理第三方庫時以任何CPU模式構建項目?

有沒有一個優雅的方式來處理這種情況,而不必有重複的項目(MyProject32和MyProject64,每個引用合適的32位或64位版本的第三方庫)?

我想到的第一個解決方案是掛鉤到AppDomain.AssemblyResolve event,並將我的第三方庫放在他們自己的32位和64位子文件夾中。然後,我會根據當前模式動態加載相應的程序集。

我想到的第二種解決方案是隻建立在32位模式,只使用32位的第三方庫(這對我來說好像是一個警察......)。

這兩種解決方案都讓我感覺特別乾淨...任何建議都會有所幫助!

+1

這是一個部署細節,在正確的Windows版本上覆制正確的DLL。如果您不想處理這個問題,那麼您已經找到了適當的解決方法。 – 2011-02-01 00:05:32

回答

1

如果這是一個內部程序,那麼我沒有看到問題。在開發計算機上安裝32位DLL並在生產計算機上安裝64位DLL。不要在錯誤的機器上安裝錯誤的DLL。使用內部應用程序,機器上錯誤的DLL問題幾乎等同於根本沒有DLL。

如果這是一個您要發佈的應用程序,或者您不能依賴具有正確位置的正確DLL的機器,那麼您的第一個解決方案聽起來很合理:找出哪個DLL適合當前運行時環境,並加載它。或者,如果無法加載,請顯示一條錯誤消息,指出問題所在。

相關問題