Freigeben über


Globaler Assemblycache

Hinweis

Dieser Artikel ist spezifisch für .NET Framework. Sie gilt nicht für neuere Implementierungen von .NET, einschließlich .NET 6 und höherer Versionen.

Jeder Computer, auf dem die Common Language Runtime installiert ist, verfügt über einen computerweiten Codecache, der als globaler Assemblycache bezeichnet wird. Im globalen Assemblycache werden Assemblys gespeichert, die speziell für die Gemeinsame Nutzung durch mehrere Anwendungen auf dem Computer festgelegt sind.

Geben Sie Assemblys nur dann durch eine Installation im globalen Assemblycache frei, wenn dies unbedingt erforderlich ist. Wenn die Freigabe einer Assembly nicht unbedingt erforderlich ist, empfiehlt es sich, die Assemblyabhängigkeiten privat zu halten und Assemblys im Anwendungsverzeichnis abzulegen. Assemblys müssen außerdem nicht im globalen Assemblycache installiert sein, um für COM-Interop oder nicht verwalteten Code verfügbar zu sein.

Hinweis

Es gibt Szenarien, in denen Sie explizit keine Assembly im globalen Assemblycache installieren möchten. Wenn Sie eine der Assemblys, aus denen eine Anwendung besteht, im globalen Assemblycache platzieren, können Sie die Anwendung nicht mehr replizieren oder installieren, indem Sie den Befehl "xcopy " verwenden, um das Anwendungsverzeichnis zu kopieren. Sie müssen die Assembly zusätzlich in den globalen Assemblycache verschieben.

Es gibt zwei Möglichkeiten, eine Assembly im Globalen Assembly-Cache bereitzustellen:

  • Verwenden Sie ein Installationsprogramm, das für die Arbeit mit dem globalen Assemblycache entwickelt wurde. Dies ist die bevorzugte Option zum Installieren von Assemblys im globalen Assemblycache.

  • Verwenden Sie ein Entwicklertool namens global assembly cache tool (Gacutil.exe), das vom Windows SDK bereitgestellt wird.

    Hinweis

    Verwenden Sie in Bereitstellungsszenarien Windows Installer, um Assemblys im globalen Assemblycache zu installieren. Verwenden Sie das Global Assembly Cache-Tool nur in Entwicklungsszenarios, da es weder die Assemblyverweiszählung noch weitere bei Verwendung des Windows Installer bereitgestellte Features unterstützt.

Ab .NET Framework 4 ist der Standardspeicherort für den globalen Assemblycache %windir%\Microsoft.NET\assembly. In früheren Versionen von .NET Framework ist der Standardspeicherort %windir%\assembly.

Administratoren schützen das Systemroot-Verzeichnis häufig mithilfe einer Zugriffssteuerungsliste (Access Control List, ACL), um den Schreib- und Ausführungszugriff zu steuern. Da der globale Assemblycache in einem Unterverzeichnis des Systemroot-Verzeichnisses installiert ist, erbt er die ACL dieses Verzeichnisses. Es wird empfohlen, dass nur Benutzer mit Administratorrechten Dateien aus dem globalen Assemblycache löschen dürfen.

Alle Assemblys, die im globalen Assemblycache bereitgestellt werden, müssen starke Namen besitzen. Wenn eine Assembly dem globalen Assemblycache hinzugefügt wird, werden Integritätsprüfungen für alle Dateien ausgeführt, aus denen die Assembly besteht. Der Cache führt diese Integritätsprüfungen aus, um sicherzustellen, dass eine Assembly nicht manipuliert wurde, z. B. wenn eine Datei geändert wurde, aber das Manifest die Änderung nicht widerspiegelt.

Siehe auch