Gewusst wie: Signieren einer Assembly mit einem starken Namen

Windows Software Development Kit (SDK) bietet mehrere Möglichkeiten, eine Assembly mit einem starken Namen zu signieren:

  • Mit dem Assembly Linker-Tool (Al.exe), das von Windows SDK bereitgestellt wird.

  • Mithilfe von Assemblyattributen, um die Informationen zum starken Namen in den Code einzufügen. Abhängig von dem Ort, an dem sich die zu verwendende Schlüsseldatei befindet, können Sie entweder das AssemblyKeyFileAttribute oder das AssemblyKeyNameAttribute verwenden.

    HinweisHinweis

    In .NET Framework, Version 2.0, geben einige Compiler bei der Verwendung von Attributen Warnmeldungen aus.

  • Mit Compileroptionen wie /keyfile oder /delaysign in C# und Visual Basic bzw. der /KEYFILE-Linkeroption oder der /DELAYSIGN-Linkeroption in C++. (Informationen zum verzögerten Signieren finden Sie unter Verzögertes Signieren einer Assembly.)

HinweisHinweis

In Visual Studio 2005 stellt die Entwicklungsumgebung Tools zum Signieren von Assemblys bereit.Siehe Verwalten der Signierung von Assemblys und Manifesten und Seite "Signierung", Projekt-Designer.

Sie benötigen ein kryptografisches Schlüsselpaar, um eine Assembly mit einem starken Namen zu signieren. Weitere Informationen zum Erstellen eines Schlüsselpaars finden Sie unter Gewusst wie: Erstellen eines öffentlichen/privaten Schlüsselpaars.

So erstellen und signieren Sie eine Assembly mit einem starken Namen unter Verwendung des Assemblylinkers

  • Geben Sie an der Eingabeaufforderung folgenden Befehl ein:

    al /out:<Assemblyname> <Modulname> /keyfile:<Dateiname>

    In diesem Befehl bezeichnet Assemblyname den Namen der Assembly, die mit einem starken Namen signiert werden soll, Modulname den Namen des Codemoduls, das zur Erstellung der Assembly verwendet wird, und Dateiname den Namen des Containers oder der Datei, worin sich das Schlüsselpaar befindet.

Im folgenden Beispiel wird die Assembly MyAssembly.dll unter Verwendung der Schlüsseldatei sgKey.snk mit einem starken Namen signiert.

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

So signieren Sie eine Assembly mit einem starken Namen unter Verwendung von Attributen

  • Fügen Sie in einem Codemodul das AssemblyKeyFileAttribute oder das AssemblyKeyNameAttribute hinzu, und geben Sie den Namen der Datei oder des Containers an, der das zum Signieren der Assembly mit einem starken Namen zu verwendende Schlüsselpaar enthält.

Im folgenden Codebeispiel wird AssemblyKeyFileAttribute mit der Schlüsseldatei keyfile.snk verwendet. Die Datei befindet sich in dem Verzeichnis, in dem die Assembly kompiliert wird.

<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
HinweisHinweis

In Entwicklungsumgebungen wie Visual Studio wird die Assembly u. U. nicht im Projektverzeichnis kompiliert.Beispielsweise kompilieren einige Versionen von Visual Studio C#-Projekte in einem Unterverzeichnis namens bin\Debug.In diesem Fall lautet der Pfad im Codebeispiel "..\\..\\keyfile.snk".In Visual Studio 2005 kann die Schlüsseldatei für C# in den Projekteinstellungen angegeben werden.

Sie können auch während des Kompiliervorgangs eine Assembly verzögert signieren. Weitere Informationen finden Sie unter Verzögertes Signieren einer Assembly.

Beim Signieren einer Assembly mit einem starken Namen sucht das Assembly Linker-Tool (Al.exe) nach der Schlüsseldatei relativ zum aktuellen und zum Ausgabeverzeichnis. Wenn Sie einen Befehlszeilencompiler verwenden, können Sie den Schlüssel einfach in das aktuelle Verzeichnis kopieren, das die Codemodule enthält.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines öffentlichen/privaten Schlüsselpaars

Referenz

Seite "Signierung", Projekt-Designer

Konzepte

Erstellen und Verwenden von Assemblys mit starkem Namen

Verzögertes Signieren einer Assembly

Weitere Ressourcen

Verwalten der Signierung von Assemblys und Manifesten