Verwenden von Visual C# zum Installieren einer Assembly im globalen Assemblycache
Dieser Artikel enthält Informationen zum Installieren einer Assembly im globalen Assemblycache in Visual C#.
Originalversion des Produkts: Visual C #
Ursprüngliche KB-Nummer: 815808
Zusammenfassung
In diesem Artikel wird beschrieben, wie Sie einen starken Namen für eine Assembly generieren und eine .dll Datei im globalen Assemblycache (GAC) installieren. Mit dem GAC können Sie Assemblys für viele Anwendungen freigeben. Das GAC wird automatisch mit der .NET-Laufzeit installiert. Komponenten werden in der Regel in C:\WINNT\Assemblygespeichert.
Um eine Assembly im GAC zu installieren, müssen Sie der Assembly einen starken Namen geben. Der Name ist ein kryptografischer Hashschlüssel oder eine Signatur. Dieser starke Name stellt die korrekte Komponentenversionsverwaltung sicher. Auf diese Weise wird verhindert, dass Komponenten mit demselben Namen miteinander in Konflikt stehen oder von einer verwendenden Anwendung falsch verwendet werden.
Anforderungen
- Administratorrechte für den Computer, auf dem die freigegebene Assembly installiert wird
- Allgemeine Vertrautheit mit Assemblys in .NET.
- Allgemeine Vertrautheit mit der Verwendung von Tools an der Eingabeaufforderung.
Globaler Assemblycache
Führen Sie die folgenden Schritte aus, um ein kleines Klassenbibliotheksprojekt mithilfe von Visual Studio zu erstellen, einen starken Namen zu generieren und die .dll Datei des Projekts im GAC zu installieren:
Erstellen Sie in Visual Studio ein neues Visual C#-Klassenbibliotheksprojekt, und nennen Sie das Projekt GACDemo.
Sie müssen einen starken Namen verwenden. Verwenden Sie zum Generieren dieses kryptografischen Schlüsselpaars das Tool "Starker Name" (Sn.exe). Dieses Tool befindet sich im Unterverzeichnis, in
\bindem das .NET Framework Solution Developer Kit (SDK) installiert ist. Das Sn.exe Tool ist einfach zu bedienen. Die Befehlszeilen-Anweisung verwendet Folgendes:sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"Hinweis
In Visual Studio können Sie die IDE-Projekteigenschaften verwenden, um ein Schlüsselpaar zu generieren und Ihre Assembly zu signieren. Anschließend können Sie Schritt 3 und Schritt 4 überspringen und auch alle Codeänderungen an der Datei "AssemblyInfo.cs " überspringen.
Führen Sie die folgenden Schritte aus, um die IDE-Projekteigenschaften zum Generieren eines Schlüsselpaars und Signieren der Assembly zu verwenden:
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf GACDemo, und klicken Sie dann auf "Eigenschaften".
Klicken Sie auf die Registerkarte " Signieren " und dann auf das Kontrollkästchen " Assembly signieren".
Klicken Sie in der Liste " Schlüssel für starken Namen auswählen " auf <"Neu...>".
Geben Sie "GACkey.snk " als Schlüsseldateinamen ein, deaktivieren Sie das Kontrollkästchen " Schlüsseldatei mit Kennwort schützen", und klicken Sie dann auf "OK".
Drücken Sie STRG+UMSCHALT+B, um das Projekt zu kompilieren.
Nachdem Sie diese Schritte ausgeführt haben, müssen Sie dennoch Schritt 5 ausführen, um Ihre Assembly im GAC zu installieren.
Erstellen Sie ein Verzeichnis mit dem Namen GACKey
C:\, damit Sie den Schlüssel leicht finden und an der Eingabeaufforderung auf den Schlüssel zugreifen können.Für die meisten Benutzer befinden sich die .NET-Tools in
C:\Program Files\Microsoft.NET\FrameworkSDK\Bin. Bevor Sie den folgenden Befehl eingeben, sollten Sie diesen ähnlichen Pfad auf Ihrem Computer in das .NET-Bin-Verzeichnis kopieren. Geben Siecdan der Eingabeaufforderung ein, klicken Sie mit der rechten Maustaste, um den Pfad einzufügen, und drücken Sie dann die EINGABETASTE, um schnell zu dem Verzeichnis zu wechseln, in dem sich das SN-Tool befindet.Geben Sie den folgenden Befehl ein:
sn -k "C:\GACKey\GACkey.snk"Ein Schlüssel wird generiert, ist aber noch nicht mit der Assembly des Projekts verknüpft. Doppelklicken Sie zum Erstellen dieser Zuordnung in Visual Studio .NET-Projektmappen-Explorer auf die Datei "AssemblyInfo.cs". Diese Datei enthält die Liste der Assemblyattribute, die standardmäßig enthalten sind, wenn ein Projekt in Visual Studio .NET erstellt wird. Ändern Sie das
AssemblyKeyFileAssemblyattribut im Code wie folgt:[assembly: AssemblyKeyFile('C:\\GACKey\\GACKey.snk') ]Kompilieren Sie das Projekt, indem Sie STRG+UMSCHALT+B drücken. Sie benötigen keinen zusätzlichen Code, um eine .dll Datei im GAC zu installieren.
Sie können die .dll Datei mithilfe des Gacutil-Tools installieren oder die .dll Datei in den entsprechenden Ordner ziehen. Wenn Sie das Tool Gacutil verwenden, können Sie einen Befehl verwenden, der wie folgt aussieht:
gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"Um die Datei zu ziehen, öffnen Sie zwei Instanzen von Windows Explorer. Suchen Sie in einer Instanz den Speicherort der .dll Dateiausgabe für Ihr Konsolenprojekt. Suchen Sie
c:\<SystemRoot>\Assemblyin der anderen Instanz nach . Ziehen Sie dann die .dll Datei in den Assemblyordner.
Vollständige Codeauflistung (AssemblyInfo.cs)
using System.Reflection;
using System.Runtime.CompilerServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// that is associated with an assembly.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Version information for an assembly is made up of the following four values:
// Major Version
// Minor Version
// Build Number
// Revision
// You can specify all the values, or you can default the revision and build numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
// To sign your assembly you must specify a key to use. See the
// Microsoft .NET Framework documentation for more information about assembly signing.
// Use the following attributes to control that key is used for signing.
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your computer. KeyFile refers to a file that contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed to the CSP and used.
// (*) To create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile must be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information about this.
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
[assembly: AssemblyKeyName("")]
Überprüfung
- Starten Sie Windows Explorer.
- Suchen Sie
C:\SystemRoot\assembly. - GACDemo wird in der Liste der installierten .dll Dateien angezeigt.