Gewusst wie: Erstellen eines öffentlichen/privaten Schlüsselpaars
Um eine Assembly mit einem starken Namen zu signieren, benötigen Sie ein Schlüsselpaar, das aus einem öffentlichen und einem privaten Schlüssel besteht. Dieses kryptografische Schlüsselpaar wird während der Kompilierung zum Erstellen einer Assembly mit starkem Namen verwendet. Sie können ein Schlüsselpaar mit dem Strong Name-Tool (Sn.exe) erstellen. Schlüsselpaardateien haben in der Regel die Erweiterung .snk.
Hinweis |
---|
In Visual Studio umfassen die Projekteigenschaftenseiten für C# und Visual Basic eine Registerkarte Signierung, auf der Sie auswählen können, ob vorhandene Schlüsseldateien verwendet oder neue Schlüsseldateien generiert werden sollen, ohne Sn.exe zu verwenden.In Visual C++ können Sie den Speicherort einer vorhandenen Schlüsseldatei auf der Eigenschaftenseite Erweitert im Abschnitt Linker des Abschnitts Konfigurationseigenschaften im Fenster Eigenschaftenseiten angeben.Die Verwendung des AssemblyKeyFileAttribute-Attributs zur Angabe eines Schlüsseldateipaares gilt ab Visual Studio 2005 als veraltet. |
So erstellen Sie ein Schlüsselpaar
Geben Sie an der Eingabeaufforderung folgenden Befehl ein:
sn –k <Dateiname>
In diesem Befehl bezeichnet Dateiname den Namen der Ausgabedatei, die das Schlüsselpaar enthält.
Im folgenden Beispiel wird ein Schlüsselpaar mit dem Namen sgKey.snk erstellt.
sn -k sgKey.snk
Wenn Sie eine Assembly verzögert signieren möchten und beide Schlüssel kontrollieren (was außer in Testszenarien kaum vorkommt), können Sie die folgenden Befehle verwenden, um ein Schlüsselpaar zu generieren, und daraus anschließend den öffentlichen Schlüssel in eine separate Datei extrahieren. Erstellen Sie zuerst das Schlüsselpaar:
sn -k keypair.snk
- Extrahieren Sie anschließend den öffentlichen Schlüssel aus dem Schlüsselpaar, und kopieren Sie ihn dann in eine separate Datei:
sn -p keypair.snk public.snk
- Nachdem Sie das Schlüsselpaar erstellt haben, müssen Sie die Datei so ablegen, dass die Tools zur Signierung mit starkem Namen Zugriff darauf haben.
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.
Wenn Sie eine frühere Version von Visual Studio verwenden, die in den Projekteigenschaften keine Registerkarte Signierung aufweist, sollten Sie die Schlüsseldatei im Projektverzeichnis speichern und das Dateiattribut wie folgt festlegen:
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];