2012-05-25 61 views
0

我用visual studio 2010編寫了一個控件庫,我將其稱爲MyLibrary。 MyLibrary引用了另一個控制庫,我們將其稱爲AnotherLibrary。我也有一個乾淨的虛擬機(CVM),我已經在CVM上向GAC添加了AnotherLibrary。使用CVM,我創建一個新的WinForms項目,將MyLibrary.dll添加到工具箱,並將其中一個控件放到窗體上。即使AnotherLibrary.dll位於GAC中(並且不需要),Visual Studio也會將MyLibrary.dll和AnotherLibrary.dll添加到引用中。我可以從引用中移除AnotherLibrary.dll,一切都很好。visual studio 2010控件庫參考

有沒有辦法阻止Visual Studio在這種情況下添加AnotherLibrary.dll?

編輯:我給了這個想法,我有一個例子。當您將TabControl添加到設計器中的父控件時,即使TabControl依賴於它,Visual Studio也不會將System.Design添加到引用。所以,肯定有辦法做到這一點?

回答

0

它是否有意義,它會自動包含所有的依賴關係?它不能假設AnotherLibrary位於您可能想要部署代碼的每臺計算機上的GAC中。當然如你所說,你可以手動刪除它....

+0

我以前見過這個。假設您使用第三方庫發佈SDK,並且不希望最終用戶必須添加對第三方庫的引用。您可以在安裝程序中將第三方.dll加密並提供您的.dll文件。儘管您的.dll引用了第三方.dll文件,但生成的.exe文件並不關心其他.dll文件,直到運行時。 – xallean

1

你仍然需要參考。就像你需要對GAC中的System.dll的引用一樣。你只需要在你的bin \ Debug目錄中的程序集的拷貝。你碰巧沒有通過刪除引用來破壞編譯器是可能的,特別是因爲這是一個間接使用的程序集。但有些可能性最終會讓你失去運氣。

一般你真的希望避免在你的開發機器上使用GAC。因爲當你說,創建一個錯誤修復程序時,你關心的是特定的版本。您從源代碼控制中獲得這些特定版本,而不是GAC。

+0

查看我的其他評論... – xallean