Odpowiedzi:
Zgadza się, więc w zasadzie jest to sposób na zapewnienie globalnej dostępności bibliotek DLL bez obaw o konflikty. Nigdy więcej DLL Hell. Każda architektura i wersja ma swoje własne miejsce do życia.
Ma również swój własny sposób przeglądania w Eksploratorze, więc jeśli idziesz do
C: \ Windows \ assembly
W Eksploratorze Windows wyświetla listę wszystkich bibliotek DLL.
Ale jeśli odpalisz cmd
, możesz zobaczyć, jak to naprawdę ma strukturę:
C: \ Users \ tritter> cd C: \ Windows \ assembly C: \ Windows \ assembly> reż Katalog C: \ Windows \ assembly 07/20/2009 14:18 <DIR> GAC 17/17/2009 16:22 <DIR> GAC_32 17/17/2009 16:22 <DIR> GAC_64 17/17/2009 16:22 <DIR> GAC_MSIL ...fantastyczna okazja... 0 plików 0 bajtów 9 Dir (s) 90.538.331.680 bajtów wolnych C: \ Windows \ assembly> cd GAC_64 C: \ Windows \ assembly \ GAC_64> reż Katalog C: \ Windows \ assembly \ GAC_64 17.06.2009, 16:22 <DIR>. 17/17/2009 16:22 <DIR> .. 01/19/2008 09:54 <DIR> blbproxy ...fantastyczna okazja... 01/19/2008 09:54 <DIR> srmlib 01/19/2008 06:11 <DIR> System.Data 01/19/2008 06:11 <DIR> System.Data.OracleClient ...fantastyczna okazja... 0 plików 0 bajtów 34 Dir (s) 90.538.331.680 bajtów wolnych C: \ Windows \ assembly \ GAC_64> cd System.Data C: \ Windows \ assembly \ GAC_64 \ System.Data> reż Katalog C: \ Windows \ assembly \ GAC_64 \ System.Data 01/19/2008 06:11 <DIR>. 01/19/2008 06:11 <DIR> .. 04/11/2009 12:20 <DIR> 2.0.0.0__b77a5c561934e089 0 plików 0 bajtów 3 Dir (s) 90.538.331.680 bajtów wolnych C: \ Windows \ assembly \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089> reż Katalog C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 04/11/2009 12:20 <DIR>. 04/11/2009 12:20 <DIR> .. 04/11/2009 12:12 3 008 512 System.Data.dll 1 plik (i) 3 008 512 bajtów 2 Dir (s) 90,538 3131,680 bajtów za darmo C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Tutaj możesz zobaczyć wersję 2.0.0.0__b77a5c561934e089 System.Data.
DLL jest identyfikowany przez 5 części:
Chociaż pierwsze 3 są na ogół duże.
Rozbijmy to:
Tak więc GAC musi być miejscem do przechowywania bibliotek kodów, aby były dostępne dla wszystkich aplikacji uruchomionych na komputerze.
Pamięć podręczna globalnego zestawu
Każdy komputer, na którym jest zainstalowane środowisko uruchomieniowe wspólnego języka, ma pamięć podręczną kodu dla całego komputera, zwaną pamięcią globalną zestawu. Pamięć podręczna zestawów globalnych przechowuje zestawy specjalnie przeznaczone do współdzielenia przez kilka aplikacji na komputerze.
Powinieneś współdzielić zespoły, instalując je w globalnej pamięci podręcznej zestawów tylko wtedy, gdy jest to konieczne. Zgodnie z ogólną wytyczną należy zachować prywatność zależności między zestawami i zlokalizować zestawy w katalogu aplikacji, chyba że współużytkowanie zestawu jest wyraźnie wymagane. Ponadto nie jest konieczne instalowanie zestawów w globalnej pamięci podręcznej zestawów, aby były one dostępne dla interfejsu COM lub kodu niezarządzanego.
Rzeczy, które zawiera MSDN, mogą cię zaskoczyć ... zwykle możesz przeczytać to jak artykuł. Proste i najważniejsze elementy u góry, misterne szczegóły głębiej. To z pewnością wyjaśnia to lepiej niż mogłem.
Zauważ, że Visual Studio wyświetla wszystkie biblioteki DLL w GAC na karcie .NET w oknie Odnośniki . (Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań i wybierz Dodaj odniesienie.) To powinno dać ci bardziej namacalny pomysł.
Global Assembly Cache (GAC) to folder w katalogu Windows do przechowywania zestawów .NET, które są specjalnie przeznaczone do współdzielenia przez wszystkie aplikacje uruchomione w systemie. Zespoły mogą być współużytkowane przez wiele aplikacji na komputerze, rejestrując je w globalnej pamięci podręcznej zestawów (GAC). GAC to lokalna pamięć podręczna zestawów obsługiwana przez system .NET Framework.
Aplikacja Exe, przede wszystkim, odniesienia z bieżącego katalogu do podkatalogu. A potem katalog systemowy. Katalog systemowy VS6.0 był ..windows / system32. Katalog systemowy .NET jest podobny do poniższej ścieżki GAC.
Ścieżka GAC
1) C: \ Windows \ Assembly (dla .NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ assembly (dla .NET 4.0)
Jak zainstalować zestaw w GAC (jako administrator)
1) Przeciągnij i upuść
2) Użyj GacUtil.exe z wierszem polecenia programu Visual Studio
gacutil -i [Path][Assembly Name].dll
Jak odinstalować zestaw z GAC (jako administrator)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh