Arbeiten mit Assemblys und dem globalen AssemblychacheWorking with Assemblies and the Global Assembly Cache

Wenn Sie eine Assembly freigeben und für mehrere Anwendungen gemeinsam nutzen möchten, können Sie die Assembly im globalen Assemblycache installieren.If you intend to share an assembly among several applications, you can install it into the global assembly cache. Jeder Computer, auf dem die Common Language Runtime installiert ist, verfügt über diesen computerweiten Codecache.Each computer where the common language runtime is installed has this machine-wide code 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. Eine Assembly muss einen starken Namen haben, um im globalen Assemblycache installiert werden zu können.An assembly must have a strong name to be installed in the global assembly cache.

Hinweis

Bei Assemblys, die im globalen Assemblycache abgelegt werden, müssen Assembly- und Dateiname (ohne die Dateinamenerweiterung) übereinstimmen.Assemblies placed in the global assembly cache must have the same assembly name and file name (not including the file name extension). Beispielsweise muss der Dateiname einer Assembly, die den Namen myAssembly hat, entweder myAssembly.exe oder myAssembly.dll lauten.For example, an assembly with the assembly name of myAssembly must have a file name of either myAssembly.exe or myAssembly.dll.

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 necessary. 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, you do not have to install assemblies into the global assembly cache to make them accessible to COM interop or unmanaged code.

Es gibt verschiedene Gründe, eine Assembly im globalen Assemblycache zu installieren:There are several reasons why you might want to install an assembly into the global assembly cache:

  • Freigegebener Standort.Shared location.

    Assemblys, die für die Verwendung durch Anwendungen vorgesehen sind, können im globalen Assemblycache installiert werden.Assemblies that should be used by applications can be put in the global assembly cache. Wenn beispielsweise alle Anwendungen eine im globalen Assemblycache befindliche Assembly verwenden sollen, kann der Datei Machine.config eine Versionsrichtlinienanweisung hinzugefügt werden, die Verweise auf die Assembly umleitet.For example, if all applications should use an assembly located in the global assembly cache, a version policy statement can be added to the Machine.config file that redirects references to the assembly.

  • Dateisicherheit.File security.

    Administratoren verwenden zum Schutz des Verzeichnisses systemroot oft eine Zugriffssteuerungsliste (ACL, Access Control List), um Schreib- und Ausführungszugriffe zu steuern.Administrators often protect the systemroot directory using an Access Control List (ACL) to control write and execute access. Da der globale Assemblycache im Verzeichnis systemroot installiert ist, erbt er die ACL dieses Verzeichnisses.Because the global assembly cache is installed in the systemroot directory, it inherits that directory's ACL. Aus diesem Grund empfiehlt es sich, 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.

  • Paralleles Versioning.Side-by-side versioning.

    Im globalen Assemblycache dürfen sich mehrere Assemblys mit demselben Namen befinden, solange sich ihre Versionsinformationen unterscheiden.Multiple copies of assemblies with the same name but different version information can be maintained in the global assembly cache.

  • Zusätzliche Suchposition.Additional search location.

    Die Common Language Runtime durchsucht den globalen Assemblycache nach der angeforderten Assembly, bevor CodeBase-Informationen in einer Konfigurationsdatei überprüft oder verwendet werden.The common language runtime checks the global assembly cache for an assembly that matches the assembly request before probing or using the codebase information in a configuration file.

Beachten Sie, dass es Szenarien gibt, in denen eine Assembly ausdrücklich nicht im globalen Assemblycache installiert werden soll.Note that 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 XCOPY das Anwendungsverzeichnis kopieren.If you place one of the assemblies that make up an application into the global assembly cache, you can no longer replicate or install the application by using XCOPY to copy the application directory. In einem solchen Fall müssen Sie die Assembly ebenfalls im globalen Assemblycache ablegen.In this case, you must also move the assembly into the global assembly cache.

In diesem AbschnittIn This Section

Gewusst wie: Installieren einer Assembly in den globalen AssemblycacheHow to: Install an Assembly into the Global Assembly Cache
Beschreibt die Möglichkeiten, eine Assembly im globalen Assemblycache zu installieren.Describes the ways to install an assembly into the global assembly cache.

Gewusst wie: Anzeigen der Inhalte des globalen AssemblycachesHow to: View the Contents of the Global Assembly Cache
Verwenden Sie das Global Assembly Cache-Tool („gacutil.exe“), um den Inhalt des globalen Assemblycaches anzuzeigen.Explains how to use the Gacutil.exe (Global Assembly Cache Tool) to view the contents of the global assembly cache.

Gewusst wie: Entfernen einer Assembly aus dem globalen AssemblycacheHow to: Remove an Assembly from the Global Assembly Cache
Verwenden Sie das Global Assembly Cache-Tool („gacutil.exe“), um eine Assembly aus dem globalen Assemblycache zu entfernen.Explains how to use the Gacutil.exe (Global Assembly Cache Tool) to remove an assembly from the global assembly cache.

Verwenden von Serviced Components mit dem globalen AssemblycacheUsing Serviced Components with the Global Assembly Cache
Erläutert, warum Serviced Components (verwaltete COM+-Komponenten) im globalen Assemblycache abgelegt werden sollten.Explains why serviced components (managed COM+ components) should be placed in the global assembly cache.

Erstellen von AssemblysCreating Assemblies
Bietet eine Übersicht über das Erstellen von Assemblys.Provides an overview of creating assemblies.

Globaler AssemblycacheGlobal Assembly Cache
Beschreibt den globalen Assemblycache.Describes the global assembly cache.

Gewusst wie: Anzeigen des AssemblyinhaltsHow to: View Assembly Contents
Erläutert, wie der IL-Disassembler („ildasm.exe“) verwendet wird, um Microsoft Intermediate Language-Informationen (MSIL) in einer Assembly anzuzeigen.Explains how to use the Ildasm.exe (IL Disassembler) to view Microsoft intermediate language (MSIL) information in an assembly.

So sucht Common Language Runtime nach AssemblysHow the Runtime Locates Assemblies
Beschreibt, wie die Assemblys, die die Anwendung bilden, von der Common Language Runtime gesucht und geladen werden.Describes how the common language runtime locates and loads the assemblies that make up your application.

Programmieren mit AssemblysProgramming with Assemblies
Beschreibt Assemblys, die die Bausteine verwalteter Anwendungen bilden.Describes assemblies, the building blocks of managed applications.