Globaler Assembly-Cache (gac)

Definition - Was bedeutet Global Assembly Cache (GAC)?

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.

Das Konzept von GAC ist das Ergebnis der .NET-Architektur, deren Design das Problem der "DLL-Hölle" behandelt, das in COM (Component Object Model) vorhanden war. Anders als in COM muss die Baugruppe in GAC nicht vor ihrer Verwendung registriert werden. Auf jede Assembly wird global ohne Konflikte zugegriffen, indem Name, Version, Architektur, Kultur und öffentlicher Schlüssel angegeben werden.

Technische.me erklärt Global Assembly Cache (GAC)

Der GAC ist ein maschinenweiter Code-Cache, der für die gleichzeitige Ausführung von Assemblys verwendet wird. Der GAC implementiert die Funktion der gemeinsam genutzten Bibliothek, bei der verschiedene Anwendungen den Code in den Dateien in einem gemeinsamen Ordner wiederverwenden. In .NET 4.0 lautet der Standardspeicherort:% windir% Microsoft.NET Assembly

Der GAC ist auch der erste im Suchpfad beim Laden einer .NET-Assembly. Die einzige Voraussetzung für die Bereitstellung einer Assembly in GAC ist, dass sie einen starken Namen hat. Die CLR (Common Language Runtime) verweist auf eine Assembly, die auf einer bestimmten Version basiert, die von der aufrufenden Anwendung erwähnt wird. Das virtuelle Dateisystem von GAC hilft beim Abrufen der versionierungsspezifischen Assembly.

Die beiden mit GAC verbundenen Tools sind GAC Tool (gacutil.exe) und Assembly Cache Viewer (shfusion.dll). Das GAC-Tool wird verwendet, um das Vorhandensein von Assemblys zu überprüfen, eine gemeinsam genutzte Assembly zu registrieren, Inhalte von GAC anzuzeigen und zu bearbeiten usw. Als Systemordner sind Administratorrechte erforderlich. Der Assembly Cache Viewer wird verwendet, um die Details (Version, Kultur usw.) anzuzeigen, die den im Cache enthaltenen Assemblys zugeordnet sind.

GAC bietet die Vorteile der Wiederverwendung von Code, der Dateisicherheit (aufgrund der Installation im Systemroot-Verzeichnis und damit des Löschens nur durch Benutzer mit Administratorrechten) sowie der gleichzeitigen Ausführung (sodass mehrere Versionen einer Assembly im selben Ordner verwaltet werden können) ), usw.

Einer der Nachteile bei der Verwendung von GAC besteht darin, dass die Version von .NET Framework, die auf dem System installiert ist, auf dem GAC verwendet wird, und die zum Kompilieren der Anwendung verwendete Version identisch sein müssen. Starke Namen können auch nicht auf Assemblys (wie Code von Drittanbietern) angewendet werden, von denen die Assemblys im GAC-Ordner abhängen.