Gewusst wie: Erstellen eines öffentlichen/privaten Schlüsselpaars
Aktualisiert: November 2007
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 2005 können Sie mithilfe der integrierten Entwicklungsumgebungen (Integrated Development Environment, IDE) von C#, Visual Basic und Visual J# Schlüsselpaare generieren und Assemblys signieren, ohne mit Sn.exe ein Schlüsselpaar erstellen zu müssen. Diese IDEs verfügen im Projekt-Designer über eine Registerkarte Signierung. In der IDE von Visual C++ können Sie den Speicherort einer vorhandenen Schlüsseldatei auf der Eigenschaftenseite Erweitert im Abschnitt Linker des Abschnitts Konfigurationseigenschaften des Fensters Eigenschaftenseiten angeben. Die Verwendung von AssemblyKeyFileAttribute zum Identifizieren von Schlüsseldateipaaren ist in Visual Studio 2005 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("..\..\key.snk")>
[assembly: AssemblyKeyFileAttribute(@"..\..\key.snk")]