Antworten:
Richtig, im Grunde ist es eine Möglichkeit, DLLs global zugänglich zu halten, ohne sich um Konflikte sorgen zu müssen. Keine DLL-Hölle mehr. Jede Architektur und Version bekommt ihren eigenen Wohnort.
Es gibt auch eine eigene Möglichkeit, es im Explorer zu durchsuchen
C: \ Windows \ Assembly
Im Windows Explorer werden alle DLLs aufgelistet.
Aber wenn Sie starten cmd
, können Sie sehen, wie es wirklich strukturiert ist:
C: \ Benutzer \ Tritter> CD C: \ Windows \ Assembly C: \ Windows \ Assembly> Verzeichnis Verzeichnis von C: \ Windows \ Assembly 20.07.2009 14:18 <DIR> GAC 17.06.2009 16:22 <DIR> GAC_32 17.06.2009 16:22 <DIR> GAC_64 17.06.2009 16:22 <DIR> GAC_MSIL ... schnipsen ... 0 Datei (en) 0 Bytes 9 Dir (s) 90.538.311.680 Bytes frei C: \ Windows \ Assembly> CD GAC_64 C: \ Windows \ Assembly \ GAC_64> Verzeichnis Verzeichnis von C: \ Windows \ Assembly \ GAC_64 17.06.2009 16:22 <DIR>. 17.06.2009 16:22 <DIR> .. 19.01.2008 09:54 <DIR> blbproxy ... schnipsen ... 19.01.2008 09:54 <DIR> srmlib 19.01.2008 06:11 <DIR> System.Data 19.01.2008 06:11 <DIR> System.Data.OracleClient ... schnipsen ... 0 Datei (en) 0 Bytes 34 Dir (s) 90.538.311.680 Bytes frei C: \ Windows \ Assembly \ GAC_64> CD System.Data C: \ Windows \ Assembly \ GAC_64 \ System.Data> Verzeichnis Verzeichnis von C: \ Windows \ Assembly \ GAC_64 \ System.Data 19.01.2008 06:11 <DIR>. 19.01.2008 06:11 <DIR> .. 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0 Datei (en) 0 Bytes 3 Dir (s) 90.538.311.680 Bytes frei 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> dir Verzeichnis von C: \ Windows \ Assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 11.04.2009 12:20 <DIR>. 04/11/2009 12:20 PM <DIR> .. 04/11/2009 12:12 PM 3,008,512 System.Data.dll 1 Datei (en) 3.008.512 Byte 2 Dir (s) 90.538.311.680 Bytes frei C: \ Windows \ Assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Hier sehen Sie die Version 2.0.0.0__b77a5c561934e089 von System.Data.
Eine DLL besteht aus 5 Teilen:
Obwohl die ersten 3 im Allgemeinen die großen sind.
Lassen Sie es uns zusammenfassen:
Der GAC muss also ein Ort zum Speichern von Codebibliotheken sein, damit alle Anwendungen auf dem Computer darauf zugreifen können.
Jeder Computer, auf dem die Common Language Runtime installiert ist, verfügt über einen maschinenweiten Code-Cache, der als globaler Assembly-Cache bezeichnet wird. Der globale Assemblycache speichert Assemblys, die speziell für die gemeinsame Nutzung durch mehrere Anwendungen auf dem Computer vorgesehen sind.
Sie sollten Assemblys freigeben, indem Sie sie nur dann im globalen Assemblycache installieren, wenn dies erforderlich ist. Halten Sie als allgemeine Richtlinie Assembly-Abhängigkeiten privat und suchen Sie Assemblys im Anwendungsverzeichnis, es sei denn, die Freigabe einer Assembly ist ausdrücklich erforderlich. Darüber hinaus ist es nicht erforderlich, Assemblys im globalen Assemblycache zu installieren, um sie für COM-Interop- oder nicht verwalteten Code zugänglich zu machen.
Die Dinge, die MSDN enthält, können Sie überraschen ... Sie können es normalerweise wie einen Artikel lesen. Die unkomplizierten und wichtigsten Punkte oben, die komplizierten Details tiefer unten. Es erklärt es sicherlich besser als ich könnte.
Beachten Sie, dass Visual Studio alle DLLs im GAC auf der Registerkarte .NET des Referenzfensters anzeigt . (Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf ein Projekt und wählen Sie Referenz hinzufügen.) Dies sollte Ihnen eine greifbarere Vorstellung geben.
Der Global Assembly Cache (GAC) ist ein Ordner im Windows-Verzeichnis zum Speichern der .NET-Assemblys, die speziell für die gemeinsame Nutzung durch alle auf einem System ausgeführten Anwendungen vorgesehen sind. Baugruppen können von mehreren Anwendungen auf dem Computer gemeinsam genutzt werden, indem sie im globalen Assemblycache (GAC) registriert werden. GAC ist ein maschinenweiter lokaler Cache von Assemblys, die von .NET Framework verwaltet werden.
Exe Application verweist zunächst aus einem aktuellen Verzeichnis auf ein Unterverzeichnis. Und dann das Systemverzeichnis. Das VS6.0-Systemverzeichnis war ..windows / system32. Das .NET-Systemverzeichnis entspricht dem folgenden GAC-Pfad.
GAC-Pfad
1) C: \ Windows \ Assembly (für .NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ Assembly (für .NET 4.0)
So installieren Sie eine Assembly in GAC (als Administrator)
1) Ziehen und Ablegen
2) Verwenden Sie GacUtil.exe mit der Visual Studio-Eingabeaufforderung
gacutil -i [Path][Assembly Name].dll
So deinstallieren Sie eine Assembly von GAC (als Administrator)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh