2009-03-05 55 views
3

如果我們有一些開發人員在64位機器和32位機器上開發某些開發人員,但是我們需要引用非託管程序集,這些程序集需要在x86中才能完成一半的團隊另一半是x64?每當有人在64位平臺上獲取最新版本時,是否還有解決方案,除了手動更新引用?混合.NET開發環境中的非託管x64程序集

回答

1

你想做這個作爲你的構建的一部分,對吧?

編寫預構建步驟,將引用的DLL從源代碼樹中的永久位置複製到本地項目。使用$(ConfigurationName)或$(PlatformName)宏來選擇哪個版本的非託管DLL實際被複制。您只需將您的DLL保存在單獨的文件夾中,並使用與配置名稱或平臺名稱匹配的名稱。

+0

實際上,這是在設計時。我們有適用於構建過程的解決方案,但是一些開發人員可以在Debug |中進行編譯64。 – PeteK 2009-03-11 16:21:36

1

用x64機器的開發者樂意運行64位版本是很奇怪的。 Visual Studio不支持在x64模式下編輯+繼續,這是相當大的損失。解決方法很簡單,將Platform Target設置爲x86。 Automagically也解決你的非託管DLL問題。

+0

這很奇怪,我會與三隻黑羊討論它,但如果有解決方案,它會更好。我想這是一個很漂亮的案例,但我會繼續尋找。 – PeteK 2009-03-11 16:20:50

0

還有一種解決方案需要編輯一些代碼。它在從Milan Gardianthis question的回答中被描述。

基本上,它涉及編寫自己的程序集引用處理程序,以確定在運行時加載哪個程序集,前提是您可以訪問程序集的兩個(32位和64位)版本。我剛剛實施了這個解決方案,我的自我,它就像一個魅力。

我的情況是這樣的:
我正在開發一個針對Windows 7 64位「Any CPU」的.NET程序。我添加了32位程序集引用,並將Copy Local設置爲false。我使用生成後事件將32位和64位程序集複製到輸出文件夾,並確保爲32位程序集提供與參考中不同的名稱。這是因爲我想強制我的自定義程序集解析器啓動並執行它的事情,這是由於.NET默認程序集解析器無法解析引用。在運行時正確的程序集被加載,並在編譯時,我沒有得到任何錯誤。應該指出的是,我沒有時間來確認現在是在32位操作系統上工作,但我沒有看到它不應該起作用的任何理由。

相關問題