Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um eine Assembly mit einem starken Namen zu signieren, müssen Sie über ein öffentliches/privates Schlüsselpaar verfügen. Dieses öffentliche und private Kryptografieschlüsselpaar wird während des Kompilierens verwendet, zur Erzeugung einer Assembly mit starkem Namen. Sie können ein Schlüsselpaar mit dem Tool "Starker Name" (Sn.exe) erstellen. Schlüsselpaardateien haben in der Regel eine SNK-Erweiterung .
Hinweis
Bei .NET (.NET Core und .NET 5 und höher) haben starke Namen keine Laufzeitüberprüfung. Die Signierung mit starkem Namen ist hauptsächlich für .NET Framework und .NET Standard 2.0 mit .NET Framework-Interoperabilitätsszenarien relevant. Wenn Sie nicht auf .NET Framework abzielen, müssen Sie Ihre Assembly in der Regel nicht mit starkem Namen benennen, es sei denn, Ihre Organisation oder Verbraucher benötigen sie.
Hinweis
In Visual Studio enthalten die Projekteigenschaftenseiten C# und Visual Basic eine Registerkarte Signing, mit der Sie vorhandene Schlüsseldateien auswählen oder neue Schlüsseldateien generieren können, ohne Sn.exe zu verwenden. In Visual C++ können Sie den Speicherort einer vorhandenen Schlüsseldatei auf der Eigenschaftenseite Erweitert im Abschnitt Linker der Konfigurationseigenschaften des Fensters Eigenschaftenseiten angeben. Die Verwendung des attributs AssemblyKeyFileAttribute zum Identifizieren der Schlüsseldateipaare wurde ab Visual Studio 2005 veraltet.
Erstellen eines Schlüsselpaars
Hinweis
Sn.exe ist in keinem Betriebssystem im .NET SDK enthalten. Es ist nur auf Windows verfügbar, wo Sie es erhalten, indem Sie Visual Studio oder das Windows SDK installieren.
Geben Sie zum Erstellen eines Schlüsselpaars an einer Eingabeaufforderung den folgenden Befehl ein:
sn –k<Dateiname>
In diesem Befehl ist der Dateiname der Name der Ausgabedatei, die das Schlüsselpaar enthält.
Im folgenden Beispiel wird ein Schlüsselpaar namens sgKey.snk erstellt.
sn -k sgKey.snk
Wenn Sie beabsichtigen, eine Assembly zu verzögern und das gesamte Schlüsselpaar zu steuern (was außerhalb von Testszenarien unwahrscheinlich ist), können Sie die folgenden Befehle verwenden, um ein Schlüsselpaar zu generieren und dann den öffentlichen Schlüssel daraus in eine separate Datei zu extrahieren. Erstellen Sie zuerst das Schlüsselpaar:
sn -k keypair.snk
Extrahieren Sie als Nächstes den öffentlichen Schlüssel aus dem Schlüsselpaar, und kopieren Sie ihn in eine separate Datei:
sn -p keypair.snk public.snk
Nachdem Sie das Schlüsselpaar erstellt haben, müssen Sie die Datei an einem Ort ablegen, den die Strong-Name-Signaturtools finden können.
Beim Signieren einer Assembly mit einem starken Namen sucht der Assemblylinker (Al.exe) nach der Schlüsseldatei relativ zum aktuellen Verzeichnis und zum Ausgabeverzeichnis. Wenn Sie Befehlszeilencompiler verwenden, können Sie einfach den Schlüssel in das aktuelle Verzeichnis kopieren, das Ihre Codemodule enthält.
Wenn Sie eine frühere Version von Visual Studio verwenden, die nicht über eine Signing Registerkarte in den Projekteigenschaften verfügt, ist der empfohlene Schlüsseldateispeicherort das Projektverzeichnis mit dem dateiattribut wie folgt angegeben:
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>