Global Assembly Cache

Global Assembly Cache

Der Global Assembly Cache (GAC) ist ein Verfahren des .NET-Frameworks, um Versionskonflikte zwischen Programmbibliotheken zu vermeiden.

Inhaltsverzeichnis

Identität und Installation im GAC

Die Identität einer Assembly setzt sich aus fünf Komponenten zusammen: dem Namen, der Dateiversion, der Sprachversion, dem öffentlichen Schlüsseltoken und der Prozessorarchitektur, für die die Assembly übersetzt wurde. Die Identität der Assembly wird über einen so genannten „starken Namen“ gesichert. Dabei wird der Name durch die Signierung der Assembly mit einem öffentlichen Schlüssel geschützt. Es ist möglich eine Assembly durch Signierung mit unterschiedlichen Schlüsseln mehrfach im GAC zu installieren. Somit kann z. B. ein Softwarehersteller eine quelloffene Bibliothek verändern (patchen) und mit seinen eigenen Keys signieren. Diese Assembly kann dann trotz gleichem Namen und Versionsnummer im GAC neben der ursprünglichen Assembly installiert werden. Lokalisierte Versionen wie z. B. für Deutsch oder Französisch (DE, FR) ist ebenso Teil der Identität der Assembly, wie die Optimierung auf eine Prozessorplattform (CIL(MSIL), x86, X64).

Der GAC ermöglicht somit die systemweite Bereitstellung von Assemblies ohne Namenskonflikte der zugrundeliegenden Dateien (DLLs oder EXEs) in Kauf zu nehmen. Die sogenannte DLL Hell wurde durch die Einführung des GAC konsequent umgangen.

Die Installation der Dateien im GAC geschieht üblicherweise über den Windows Installer, kann aber auch manuell mit Hilfe des Programmes GACUTIL.exe erfolgen. Auf die Verzeichnisse des GAC kann nur mit Administratorrechten schreibend zugegriffen werden, sodass zur Installation von Dateien im GAC Administratorrechte erforderlich sind.

Implementierung des GAC unter Windows

Ansicht des GAC in der Explorer-Erweiterung und im tatsächlichen Dateisystem

Dateisystem

Die gemeinsam genutzten Assemblies werden in einem speziellen Verzeichnis (%SystemRoot%\assembly) installiert und verwaltet. Dieses enthält weitere Unterverzeichnisse für die jeweilige Prozessorarchitektur (z.B. GAC, GAC_32, GAC_64, GAC_MSIL) und die eigentlichen Assembly-Namen. Die Verzeichnisse mit den Assembly-Namen enthalten Unterverzeichnisse mit der Assemblyversion und dem öffentlichen Schlüssel. Der Zugriff auf die passende Assemblyversion ist also über einen Verzeichnisbaum möglich.

Explorer-Erweiterung

Der Windows-Explorer verfügt über ein spezielles Interface zur Anzeige von Assemblies, den Assembly Cache Viewer. Beim Ansteuern des %SystemRoot%\assembly Verzeichnisses werden dem Benutzer alle installierten Assemblies mit Version, Kultur, Schlüsseltoken und Prozessorarchitektur angezeigt. Das Interface erlaubt auch eine Installation per Drag and Drop.

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Global Assembly Cache — The Global Assembly Cache or GAC is a machine wide .NET assemblies cache for Microsoft s CLR platform. The approach of having a specially controlled central repository addresses the shared library concept and helps to avoid pitfalls of other… …   Wikipedia

  • Global Assembly Cache — Chaque ordinateur sous Windows sur lequel le Common Language Runtime est installé possède un cache de code à l échelle de l ordinateur appelé Global Assembly Cache. Le Global Assembly Cache stocke les assembly spécialement destinés à être… …   Wikipédia en Français

  • Download Cache — Not to be confused with web cache. The Download Cache, or downloaded files cache, is a component of Microsoft s .NET Framework that is similar to the Global Assembly Cache except that it caches assemblies that have been downloaded from the… …   Wikipedia

  • .NET assembly — In the Microsoft .NET framework, an assembly is a partially compiled code library for use in deployment, versioning and security. In the Microsoft Windows implementation of .NET, an assembly is a PE (portable executable) file. There are two types …   Wikipedia

  • .NET-Framework — Basisdaten Entwickler: Microsoft Aktuelle Version …   Deutsch Wikipedia

  • .NET-Klassenbibliothek — NET Framework Basisdaten Entwickler: Microsoft Aktuelle Version …   Deutsch Wikipedia

  • .NET 3.0 — NET Framework Basisdaten Entwickler: Microsoft Aktuelle Version …   Deutsch Wikipedia

  • .NET Framework — Basisdaten Entwickler: Microsoft Aktuelle Version …   Deutsch Wikipedia

  • .NET Framework 3.0 — NET Framework Basisdaten Entwickler: Microsoft Aktuelle Version …   Deutsch Wikipedia

  • .Net — Framework Basisdaten Entwickler: Microsoft Aktuelle Version …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”