Freigeben über


Assemblys mit starken 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 die Namen und Hashes aller Dateien enthält, aus denen die Assembly besteht. Assemblys mit demselben starken Namen sollten identisch sein.

Sie können Assemblys mit einem starken Namen versehen, indem Sie Visual Studio oder ein Befehlszeilentool verwenden. Weitere Informationen finden Sie unter Vorgehensweise: Signieren einer Assembly mit starkem Namen oder Sn.exe (Strong Name-Tool).

Wenn ein Assembly mit einem starken Namen erstellt wird, enthält es den einfachen Textnamen der Assembly, die Versionsnummer, optionale Kulturinformationen, eine digitale Signatur und den öffentlichen Schlüssel, der dem für die Signierung verwendeten privaten Schlüssel entspricht.

Warnung

Verlassen Sie sich nicht auf starke Namen für sicherheit. Sie stellen nur eine eindeutige Identität bereit.

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

Für .NET Framework sind stark benannte Assemblys in den folgenden Szenarien 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.

  • Eine App benötigt Zugriff auf verschiedene Versionen derselben Assembly. Dies bedeutet, dass Sie unterschiedliche Versionen einer Assembly benötigen, um parallel in derselben App-Domäne ohne Konflikte zu laden. Wenn beispielsweise unterschiedliche Erweiterungen einer API in Assemblys vorhanden sind, die denselben einfachen Namen aufweisen, stellt die starke Benennung für jede Version der Assembly eine eindeutige Identität bereit.

  • Sie möchten die Leistung von Apps, die Ihre Assembly verwenden, nicht negativ beeinflussen, sodass die Assembly domänenneutral sein soll. Dies erfordert eine starke Benennung, da eine domänenneutrale Assembly im globalen Assemblycache installiert werden muss.

  • Sie möchten die Wartung für Ihre App zentralisieren, indem Sie die Herausgeberrichtlinie anwenden. Dies bedeutet, dass die Assembly im globalen Assemblycache installiert werden muss.

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 ein Open-Source-Entwickler sind und die Identitätsvorteile einer stark benannten Assembly für eine bessere Kompatibilität mit .NET Framework benötigen, sollten Sie in Erwägung ziehen, den privaten Schlüssel zu überprüfen, der einer Assembly mit Ihrem Quellcodeverwaltungssystem zugeordnet ist.

Siehe auch