Vorgehensweise: Erstellen eines Schlüsselpaars aus öffentlichem und privatem Schlüssel
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 die Registerkarte Signierung, auf der Sie auswählen können, ob vorhandene Schlüsseldateien verwendet oder neue Schlüsseldateien generiert werden sollen, ohne dass Sn.exe eingesetzt wird. 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 von Schlüsseldateipaaren ist ab Visual Studio 2005 veraltet.
Erstellen eines Schlüsselpaars
Geben Sie über eine Eingabeaufforderung den folgenden Befehl ein, um ein Schlüsselpaar zu erstellen:
sn –k<Dateiname>
Bei 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 nicht die 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")>