Globaler AssemblycacheGlobal Assembly Cache

Jeder Computer, auf dem die Common Language Runtime installiert ist, besitzt einen computerweiten Codecache, den so genannten globalen Assemblycache.Each computer where the Common Language Runtime is installed has a machine-wide code cache called the Global Assembly Cache. Im globalen Assemblycache werden Assemblys gespeichert, die speziell für die gemeinsame Verwendung durch mehrere Anwendungen auf dem Computer vorgesehen sind.The Global Assembly Cache stores assemblies specifically designated to be shared by several applications on the computer.

Geben Sie Assemblys nur dann durch eine Installation im globalen Assemblycache frei, wenn dies unbedingt erforderlich ist.You should share assemblies by installing them into the Global Assembly Cache only when you need to. Wenn die Freigabe einer Assembly nicht unbedingt erforderlich ist, empfiehlt es sich, die Assemblyabhängigkeiten privat zu halten und Assemblys im Anwendungsverzeichnis abzulegen.As a general guideline, keep assembly dependencies private, and locate assemblies in the application directory unless sharing an assembly is explicitly required. Assemblys müssen außerdem nicht im globalen Assemblycache installiert sein, um für COM-Interop oder nicht verwalteten Code verfügbar zu sein.In addition, it is not necessary to install assemblies into the Global Assembly Cache to make them accessible to COM interop or unmanaged code.

Hinweis

Es gibt Szenarios, in denen eine Assembly ausdrücklich nicht im globalen Assemblycache installiert werden soll.There are scenarios where you explicitly do not want to install an assembly into the Global Assembly Cache. Wenn Sie eine der Assemblys, aus denen eine Anwendung besteht, im globalen Assemblycache ablegen, können Sie die Anwendung anschließend weder replizieren noch installieren, indem Sie mit dem xcopy-Befehl das Anwendungsverzeichnis kopieren.If you place one of the assemblies that make up an application in the Global Assembly Cache, you can no longer replicate or install the application by using the xcopy command to copy the application directory. Sie müssen die Assembly zusätzlich in den globalen Assemblycache verschieben.You must move the assembly in the Global Assembly Cache as well.

Es gibt zwei Möglichkeiten für die Bereitstellung einer Assembly im globalen Assemblycache:There are two ways to deploy an assembly into the Global Assembly Cache:

  • Die Verwendung eines Installationsprogramms, das für die Zusammenarbeit mit dem globalen Assemblycache entworfen wurde.Use an installer designed to work with the Global Assembly Cache. Das ist die bevorzugte Option für die Installation von Assemblys im globalen Assemblycache.This is the preferred option for installing assemblies into the Global Assembly Cache.

  • Die Verwendung des Entwicklertools Global Assembly Cache-Tool (Gacutil.exe) aus Windows Software Development Kit (SDK)Windows Software Development Kit (SDK).Use a developer tool called the Global Assembly Cache tool (Gacutil.exe), provided by the Windows Software Development Kit (SDK)Windows Software Development Kit (SDK).

    Hinweis

    Bei Bereitstellungsszenarios sollten Sie Assemblys mit Windows Installer im globalen Assemblycache installieren.In deployment scenarios, use Windows Installer to install assemblies into the Global Assembly Cache. 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.Use the Global Assembly Cache tool only in development scenarios, because it does not provide assembly reference counting and other features provided when using the Windows Installer.

Ab .NET Framework 4 lautet der Standardspeicherort des globalen Assemblycaches %windir%\Microsoft.NET\assembly.Starting with the .NET Framework 4, the default location for the Global Assembly Cache is %windir%\Microsoft.NET\assembly. In früheren Versionen von .NET Framework lautet der Standardspeicherort %windir%\assembly.In earlier versions of the .NET Framework, the default location is %windir%\assembly.

Administratoren verwenden zum Schutz des Verzeichnisses systemroot oftmals eine Zugriffssteuerungsliste (ACL – Access Control List), um Schreib- und Ausführungszugriffe zu kontrollieren.Administrators often protect the systemroot directory using an access control list (ACL) to control write and execute access. Da der globale Assemblycache in einem Unterverzeichnis des Verzeichnisses „Systemstamm“ installiert ist, erbt er die ACL dieses Verzeichnisses.Because the Global Assembly Cache is installed in a subdirectory of the systemroot directory, it inherits that directory's ACL. Aus diesem Grund wird empfohlen, nur Benutzern mit Administratorrechten das Löschen von Dateien aus dem globalen Assemblycache zu gestatten.It is recommended that only users with Administrator privileges be allowed to delete files from the Global Assembly Cache.

Alle Assemblys, die im globalen Assemblycache bereitgestellt werden, müssen starke Namen besitzen.Assemblies deployed in the Global Assembly Cache must have a strong name. Beim Hinzufügen einer Assembly zum globalen Assemblycache werden Integritätsprüfungen für alle Dateien vorgenommen, aus denen die Assembly besteht.When an assembly is added to the Global Assembly Cache, integrity checks are performed on all files that make up the assembly. Diese Integritätsprüfungen werden vom Cache durchgeführt, um sicherzustellen, dass eine Assembly nicht manipuliert wurde (z. B. wenn eine Datei geändert wurde, aber das Manifest diese Änderung nicht widerspiegelt).The cache performs these integrity checks to ensure that an assembly has not been tampered with, for example, when a file has changed but the manifest does not reflect the change.

Siehe auchSee Also