2010-04-27 12 views
8

Jakieś pomysły, jak wymusić DLL GAC w referencji?Uwzględnij złożenia GAC ​​w pojemniku

Oto mój problem, ciągle używam biblioteki DLL innej firmy, która rejestruje się w GAC, a kiedy używam go w moim projekcie, odczytuje go z gac, a kiedy wdrażam, zawsze zapominam o dodać biblioteki DLL, ponieważ nie znajduje się w folderze Bin/Referenced.

W każdym razie zmusić Visual Studio do dodania biblioteki DLL zamiast GAC?

Odpowiedz

7

Kliknij prawym przyciskiem myszy na odwołanie do montażu, wybierz właściwości i zmień wartość "Kopiuj lokalnie" na true. Spowoduje to skopiowanie montaż do katalogu rozmieszczania

+9

Ostrzeżenie: To nie jest przechodnia! Jeśli więc 'MyExe' odwołuje się do' MyLib' odwołuje się do 'DllInGac', to' MyLib' będzie kopiowany lokalnie, ale * jego * zależności nie będą kopiowane do 'MyExe', jeśli są już w GAC. –

5

Wybierz dll w twoich referencjach i ustaw CopyLocal = true w oknie właściwości.

2

Wybierz odniesienie i ustawić właściwość Copy Local True

12

Copy Local działa tylko jeśli zespół GAC'd jeśli głęboko jeden poziom odniesienia. Na przykład, jeśli masz projekt, który odwołuje się do zespołu GAC, i ten projekt, do którego odwołuje się twój projekt WWW, wówczas, gdy tak, zespół GAC zostanie skopiowany do folderu bin pierwszego projektu, ale nie będzie być skopiowane do folderu bin projektu internetowego.

Rozwiązanie polega zatem na bezpośrednim ustawieniu odwołania w projekcie WWW na zespół GAC oraz na wybraniu opcji Kopiuj lokalnie. Mimo że projekt internetowy nie korzysta bezpośrednio z odniesienia w tym przypadku, skopiuje je do folderu bin aplikacji WWW.

+2

Rozwiązanie jest najeżone niebezpieczeństwem, szczególnie gdy włączają się narzędzia do czyszczenia kodu. Jeśli coś takiego jak Resharper powie ci, że odniesienie jest "nie wymagane" (myślę, że duży zespół projektowy) i te odniesienia są oczyszczone, wracasz do pierwszego. – Shiv