DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Kerstin Lahr Artikel Drucken
        
GAC - Der Global Assembly Cache

Der Global Assembly Cache (GAC) ist ein globales Verzeichnis, in das freigegebene Assemblies, also Assemblies mit einem strong name, installiert (kopiert) werden können. Ähnlich wie klassische DLLs können sie dadurch von mehreren Anwendungen gleichzeitig benutzt werden, ohne allerdings einen Eintrag in der Registry zu benötigen.
Weitere Gründe für das Hinzufügen einer Assembly in den GAC sind:

  • Dateisicherheit:
    Da der globale Assemblycache im WINNT-Verzeichnis installiert ist, können normalerweise nur Administratoren Dateien installieren oder löschen.
  • Parallele Versionierung:
    Mehrere Versionen einer Assembly können im GAC parallel eingestellt werden (Side-by-Side-Execution).
  • Integritätsprüfung:
    Beim Installieren in den GAC wird die Integrität jeder einzelnen Datei der Assembly überprüft.
  • Performance-Vorteile:
    1. Keine Verifikation, d. h. Zeitvorteil bei häufiger Nutzung der Assembly
    2. Nur eine einzige Instanz der Assembly, d. h. beschleunigter Ladevorgang
        bei mehrfacher Nutzung durch mehrere Clients
    3. Schnelleres Finden durch die Common Language

Die Verwendung des GACs sollte wohl überlegt sein, da dieser Speicher genau wie das System32-Verzeichnis dazu neigen wird, mit längst nicht mehr benötigten Assemblies gefüllt zu sein.
Außerdem funktioniert bei diesen Anwendungen die einfache XCOPY Weitergabe nicht mehr.

Wenn Sie wissen wollen, welche Assemblies im GAC installiert sind, haben Sie zwei Möglichkeiten.
Erstens das Assembly Cache Viewer-Tool (shfusion.dll) des .NET Framework SDK. Hierbei handelt es sich um eine Erweiterung der Windows-Shell, mit dem der Inhalt des globalen Assemblycaches im Windows Explorer angezeigt und verändert werden kann.
Navigieren Sie im Windows Explorer einfach zum Unterverzeichnis \assembly des Windows-Verzeichnisses, um den Inhalt des globalen Assemblycaches anzuzeigen.

Mit dem Assembly Cache Viewer-Tool können folgende Aktionen durchgeführt werden:

  • Anzeigen des Cacheinhalts
  • Anzeigen und Ändern der Größenbeschränkungen für den Downloadcache
    (unter Extras -> Cacheeinstellungen)
  • Anzeigen der Eigenschaften einer einzelnen Assembly (rechter Mausklick)
  • Hinzufügen von Assemblies zum Cache (Drag&Drop)
  • Löschen von Assemblies aus dem Cache (rechter Mausklick)
  • Anzeigen von Hilfeinformationen (F1 oder ? -> Hilfethemen)

Eine andere Möglichkeit ist, das Global Assembly Cache-Tool (Gacutil.exe) zu verwenden, welches auch im .NET Framework SDK enthalten ist. Mit diesem Tool können Sie außerdem Assemblies im GAC installieren oder löschen.

Um den Inhalt des GAC anzuzeigen, geben Sie in der Eingabeaufforderung folgenden Befehl ein:

gacutil /l

Um den Inhalt des Downloadcaches anzuzeigen:

gacutil /ldl

Gacutil.exe bietet Optionen zur Unterstützung einer Verweiszählung, die dem von Windows Installer unterstützten Verweiszählungsschema ähnelt. Mit Gacutil.exe können Sie zwei Anwendungen installieren, die dieselbe Assembly installieren, wobei das Tool die Anzahl der Verweise auf die Assembly verfolgt. Daher verbleibt die Assembly auf dem Computer, bis beide Anwendungen deinstalliert wurden.
Wenn Sie Gacutil.exe für die eigentliche Produktinstallation einsetzen, verwenden Sie die Optionen, die die Verweiszählung unterstützen.

So installieren Sie eine Assembly ohne Verweiszählung:

gacutil /i myAssembly.dll

Wenn Sie eine Assembly mit Verweiszählung installieren möchten, müssen Sie mit dieser Option den Assemblynamen, den scheme-Parameter, den id-Parameter und den description-Parameter angeben, z.B.

gacutil /i /r myAssembly.dll UNINSTALL_KEY MyApp "Anwendungsbeschreibung"

Der UNINSTALL_KEY MyApp-Parameter gibt den Registrierungsschlüsel an, der MyApp in Windows der Liste unter der Option Software hinzufügt. Der description-Parameter wird als ?Anwendungsbeschreibung? angegeben.

gacutil /i /r myAssembly.dll FILEPATH c:\applications\myApp\myApp.exe myApp

Der scheme-Parameter FILEPATH und der id-Parameter c:\applications\myApp\myApp.exe geben den Pfad der Anwendung an, die myAssembly.dll installiert. Der description-Parameter wird als MyApp angegeben. Geben Sie diesen Wert an, wenn die Anwendung nicht dem Eintrag Software hinzugefügt wird.

gacutil /i /r myAssembly.dll OPAQUE "Hier benutzerdefinierte Anwendungsdetails" "Hier benutzerdefinierte Beschreibung"

Geben Sie  den scheme-Parameter OPAQUE an, wenn bei der Installation kein Registrierungschlüssel oder Dateipfad angegeben werden kann. Dieser Wert ermöglicht es Ihnen, benutzerdefinierte Informationen für den id-Parameter und den description-Parameter anzugeben.

Wie für die Installation gibt es auch für die Deinstallation mehrere Optionen. Der Befehl

gacutil /u hallo

löscht alle Assemblies ohne Verweiszählung mit dem Namen ?hallo? aus dem GAC.

Um nur eine bestimmte Assembly zu entfernen, müssen Sie spezifischere Angaben machen, wie die vollständige Versionsnummer, die Kultur oder den öffentlichen Schlüssel, z. B.

gacutil /u hallo, Version=1.0.0.1, Culture="de", PublicKeyToken=b03f5f7f11d50a3a

Einfacher wäre das allerdings wohl mit einem rechten Mausklick in der Exploreransicht des Assemblyverzeichnisses.
Mit dem folgenden Befehl wird der Verweis auf myAssembly.dll durch die Anwendung myApp entfernt. Wenn es sich hierbei um den letzten Verweis auf die Assembly handelt, wird auch die Assembly aus dem Assemblycache entfernt.

gacutil /u /r myAssembly.dll FILEPATH c:\applications\myApp\myApp.exe myApp

Um den Inhalt des Downloadcaches zu löschen, benutzen Sie folgenden Befehl:

gacutil /cdl

Zum Schluß möchte ich noch kurz auf die Listenoptionen des Global Assembly Cache-Tools eingehen.
Möchten Sie mehrere Assemblies gleichzeitig installieren oder deinstallieren, können Sie ihren Pfad bzw. den voll gekennzeichneten Namen in jeweils eigenen Zeilen in einer ANSI-Textdatei speichern und mit dem Befehl

gacutil /il assemblyList.txt

installieren, oder mit dem Befehl

gacutil /ul assemblyList.txt

deinstallieren.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 24.09.2003
  Gültig bis: 23.12.2003
19 Ratings
Bewertung: 90,5%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG