Gewusst wie: Signieren einer Assembly mit einem starken NamenHow to: Sign an Assembly with a Strong Name

Es gibt mehrere Möglichkeiten, eine Assembly mit einem starken Namen zu signieren:There are a number of ways to sign an assembly with a strong name:

  • Mithilfe der Registerkarte Signierung im Dialogfeld Eigenschaften eines Projekts in Visual Studio.By using the Signing tab in a project's Properties dialog box in Visual Studio. Dies ist die einfachste und bequemste Methode, eine Assembly mit einem starken Namen zu signieren.This is the easiest and most convenient way to sign an assembly with a strong name.

  • Mit dem Assemblylinker-Tool (Al.exe) , um ein .NET Framework-Codemodul (eine NETMODULE-Datei) mit einer Schlüsseldatei zu verknüpfen.By using the Assembly Linker (Al.exe) to link a .NET Framework code module (a .netmodule file) with a key file.

  • Mithilfe von Assemblyattributen, um die Informationen zum starken Namen in den Code einzufügen.By using assembly attributes to insert the strong name information into your code. Abhängig von dem Ort, an dem sich die zu verwendende Schlüsseldatei befindet, können Sie entweder das AssemblyKeyFileAttribute -Attribut oder das AssemblyKeyNameAttribute -Attribut verwenden.You can use either the AssemblyKeyFileAttribute or the AssemblyKeyNameAttribute attribute, depending on where the key file to be used is located.

  • Mithilfe von Compileroptionen.By using compiler options.

Sie benötigen ein kryptografisches Schlüsselpaar, um eine Assembly mit einem starken Namen zu signieren.You must have a cryptographic key pair to sign an assembly with a strong name. Weitere Informationen zum Erstellen eines Schlüsselpaars finden Sie unter Gewusst wie: Erstellen eines öffentlichen/privaten Schlüsselpaars.For more information about creating a key pair, see How to: Create a Public-Private Key Pair.

So erstellen und signieren Sie eine Assembly mit einem starken Namen mithilfe von Visual StudioTo create and sign an assembly with a strong name by using Visual Studio

  1. Öffnen Sie im Projektmappen-Explorerdas Kontextmenü für das Projekt, und wählen Sie Eigenschaftenaus.In Solution Explorer, open the shortcut menu for the project, and then choose Properties.

  2. Wählen Sie die Registerkarte Signierung aus.Choose the Signing tab.

  3. Wählen Sie das Feld Assembly signieren aus.Select the Sign the assembly box.

  4. Wählen Sie im Feld Schlüsseldatei mit starkem Namen auswählen die Option <Durchsuchen…> aus, und navigieren Sie dann zur Schlüsseldatei.In the Choose a strong name key file box, choose <Browse…>, and then navigate to the key file. Wählen Sie zum Erstellen einer neuen Schlüsseldatei <Neu…> aus, und geben Sie ihren Namen im Dialogfeld Schlüssel für einen starken Namen erstellen ein.To create a new key file, choose <New…> and enter its name in the Create Strong Name Key dialog box.

So erstellen und signieren Sie eine Assembly mit einem starken Namen unter Verwendung des AssemblylinkersTo create and sign an assembly with a strong name by using the Assembly Linker

  • Geben Sie an der Visual Studio-Eingabeaufforderung den folgenden Befehl ein:At the Visual Studio Command Prompt, type the following command:

    al /out:<Assemblyname> <Modulname> /keyfile:<Schlüsseldateiname>al /out:<assemblyName> <moduleName> /keyfile:<keyfileName>

    Dabei gilt:where:

    assemblyNameassemblyName
    Der Name der stark signierten Assembly (eine DLL- oder EXE-Datei), die der Assemblylinker ausgibt.The name of the strongly signed assembly (a .dll or .exe file) that Assembly Linker will emit.

    moduleNamemoduleName
    Der Name eines .NET Framework-Codemoduls (eine NETMODULE-Datei), das mindestens einen Typen enthält.The name of a .NET Framework code module (a .netmodule file) that includes one or more types. Sie können eine NETMODULE-Datei erstellen, indem Sie Code mit dem Schalter /target:module in C# oder Visual Basic kompilieren.You can create a .netmodule file by compiling your code with the /target:module switch in C# or Visual Basic.

    keyfileNamekeyfileName
    Der Name des Containers oder der Datei, der bzw. die das Schlüsselpaar enthält.The name of the container or file that contains the key pair. Assemblylinker interpretiert einen relativen Pfad in Beziehung zum aktuellen Verzeichnis.Assembly Linker interprets a relative path in relationship to the current directory.

Im folgenden Beispiel wird die Assembly MyAssembly.dll unter Verwendung der Schlüsseldatei sgKey.snkmit einem starken Namen signiert.The following example signs the assembly MyAssembly.dll with a strong name by using the key file sgKey.snk.

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

Weitere Informationen über die Verwendung dieses Tools finden Sie unter Assemblylinker.For more information about this tool, see Assembly Linker.

So signieren Sie eine Assembly mit einem starken Namen unter Verwendung von AttributenTo sign an assembly with a strong name by using attributes

  1. Fügen Sie in Ihrer Codemoduldatei das System.Reflection.AssemblyKeyFileAttribute -Attribut oder das AssemblyKeyNameAttribute -Attribut hinzu, und geben Sie den Namen der Datei oder des Containers an, die bzw. der das zum Signieren der Assembly mit einem starken Namen zu verwendende Schlüsselpaar enthält.Add the System.Reflection.AssemblyKeyFileAttribute or AssemblyKeyNameAttribute attribute to your source code file, and specify the name of the file or container that contains the key pair to use when signing the assembly with a strong name.

  2. Kompilieren Sie die Quellcodedatei normal.Compile the source code file normally.

Hinweis

Die C#- und Visual Basic-Compiler geben Compilerwarnungen aus (CS1699 bzw. BC41008), wenn das AssemblyKeyFileAttribute -Attribut oder das AssemblyKeyNameAttribute -Attribut im Quellcode auftreten.The C# and Visual Basic compilers issue compiler warnings (CS1699 and BC41008, respectively) when they encounter the AssemblyKeyFileAttribute or AssemblyKeyNameAttribute attribute in source code. Sie können die Warnungen ignorieren.You can ignore the warnings.

Im folgenden Beispiel wird das AssemblyKeyFileAttribute -Attribut mit der Schlüsseldatei keyfile.snkverwendet, die sich in dem Verzeichnis befindet, in dem die Assembly kompiliert wird.The following example uses the AssemblyKeyFileAttribute attribute with a key file called keyfile.snk, which is located in the directory where the assembly is compiled.

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

Sie können auch während des Kompiliervorgangs der Quelldatei eine Assembly verzögert signieren.You can also delay sign an assembly when compiling your source file. Weitere Informationen finden Sie unter Verzögertes Signieren einer Assembly.For more information, see Delay Signing an Assembly.

So signieren Sie eine Assembly mit einem starken Namen unter Verwendung des CompilersTo sign an assembly with a strong name by using the compiler

  • Kompilieren Sie Ihre Quellcodedateien mit der Compileroption /keyfile oder /delaysign in C# und Visual Basic bzw. mit der Linkeroption /KEYFILE oder /DELAYSIGN in C++.Compile your source code file or files with the /keyfile or /delaysign compiler option in C# and Visual Basic, or the /KEYFILE or /DELAYSIGN linker option in C++. Fügen Sie nach dem Optionsnamen einen Doppelpunkt und den Namen der Schlüsseldatei hinzu.After the option name, add a colon and the name of the key file. Wenn Sie einen Befehlszeilencompiler verwenden, können Sie die Schlüsseldatei in das Verzeichnis kopieren, das die Quellcodedateien enthält.When using command-line compilers, you can copy the key file to the directory that contains your source code files.

    Informationen zum verzögerten Signieren finden Sie unter Delay Signing an Assembly.For information on delay signing, see Delay Signing an Assembly.

    Im folgenden Beispiel wird der C#-Compiler verwendet und die Assembly UtilityLibrary.dll mithilfe der Schlüsseldatei sgKey.snk mit einem starken Namen signiert.The following example uses the C# compiler and signs the assembly UtilityLibrary.dll with a strong name by using the key file sgKey.snk.

    csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk  
    

Siehe auchSee Also

Erstellen und Verwenden von Assemblys mit starkem NamenCreating and Using Strong-Named Assemblies
Vorgehensweise: Erstellen eines öffentlichen/privaten SchlüsselpaarsHow to: Create a Public-Private Key Pair
Al.exe (Assembly Linker-Tool)Al.exe (Assembly Linker)
Verzögertes Signieren einer AssemblyDelay Signing an Assembly
Verwalten der Signierung von Assemblys und ManifestenManaging Assembly and Manifest Signing
Seite „Signierung“, Projekt-DesignerSigning Page, Project Designer