Assemblys mit starkem Namen

Durch die Vergabe eines starken Namens erhalten Assemblys eine eindeutige Identität. Außerdem werden Assemblykonflikte verhindert.

Wodurch zeichnet sich eine Assembly mit starkem Namen aus?

Eine Assembly mit starkem Namen wird mithilfe des privaten Schlüssels generiert, der zu dem mit der Assembly verteilten öffentlichen Schlüssel gehört, sowie der Assembly selbst. Die Assembly enthält das Assemblymanifest, das seinerseits die Namen und Hashs aller Dateien enthält, aus denen die Assembly besteht. Assemblys mit demselben starken Namen sollten identisch sein.

Sie können Assemblys mit starkem Namen mithilfe von Visual Studio oder einem Befehlszeilentool erstellen. Weitere Informationen finden Sie unter Vorgehensweise: Signieren einer Assembly mit starkem Namen oder Sn.exe (Strong Name-Tool).

Assemblys mit starkem Namen enthalten den einfachen Textnamen der Assembly, die Versionsnummer, optionale Kulturinformationen, eine digitale Signatur und den öffentlichen Schlüssel, der zu dem für die Signierung verwendeten privaten Schlüssel gehört.

Warnung

Verlassen Sie sich für die Sicherheit nicht auf starke Namen. Diese Namen bieten lediglich eine eindeutige Identität.

Warum sollten Sie starke Namen für Ihre Assemblys vergeben?

Für das .NET Framework sind Assemblys mit starken Namen in den folgenden Szenarios nützlich:

  • Auf Ihre Assemblys kann durch Assemblys mit starkem Namen verwiesen werden. Alternativ können Sie den friend-Zugriff auf Ihre Assemblys von anderen Assemblys mit starkem Namen ermöglichen.

  • Für eine App ist der Zugriff auf verschiedene Versionen derselben Assembly erforderlich. Das bedeutet, dass Sie verschiedene Versionen einer Assembly nebeneinander in derselben App-Domäne laden müssen, ohne dass es zu Konflikten kommt. Wenn z. B. verschiedene Erweiterungen einer API in Assemblys mit demselben einfachen Namen existieren, können Sie durch die Vergabe von starken Namen eine eindeutige Identität für die einzelnen Versionen der Assembly vergeben.

  • Die Assembly sollte domänenneutral sein, um eine Beeinträchtigung der Leistung der Apps zu vermeiden, die auf Ihre Assembly zugreifen. Dies erfordert starke Namen, da eine domänenneutrale Assembly im globalen Assemblycache installiert werden muss.

  • Sie möchten die Wartung Ihrer App durch Anwendung einer Verlegerrichtlinie zentralisieren. Die Assembly muss daher im globalen Assemblycache installiert sein.

Für .NET Core und .NET 5+ bieten Assemblys mit starken Namen keine wesentlichen Vorteile. Die Runtime führt weder eine Validierung der Signatur mit dem starken Namen durch, noch verwendet sie den starken Namen für die Assemblybindung.

Wenn Sie Open-Source-Entwickler sind und herausfinden möchten, welchen Nutzen Assemblys mit starken Namen für die Kompatibilität mit dem .NET Framework haben, können Sie den privaten Schlüssel zusammen mit der zugehörigen Assembly in Ihr Quellcodeverwaltungssystem einchecken.

Siehe auch