Was sind die Vorteile der Verwendung von Baugruppen mit starken Namen?
Was kann man mit einer normalen Baugruppe nicht machen?
Lassen Sie mich zunächst die Vorteile einer starken Benennung Ihrer Baugruppe auflisten:
Durch die starke Benennung Ihrer Assembly können Sie Ihre Assembly in den Global Assembly Cache (GAC) aufnehmen. Auf diese Weise können Sie es für mehrere Anwendungen freigeben.
Eine starke Benennung garantiert einen eindeutigen Namen für diese Baugruppe. Somit kann niemand sonst den gleichen Baugruppennamen verwenden.
Starker Name schützt die Versionslinie einer Baugruppe. Ein starker Name kann sicherstellen, dass niemand eine nachfolgende Version Ihrer Baugruppe erstellen kann. Anwendungsbenutzer stellen sicher, dass eine Version der Assembly, die sie laden, von demselben Herausgeber stammt, der die Version erstellt hat, mit der die Anwendung erstellt wurde.
Weitere Informationen zu starken Namen von Microsoft finden Sie in MSDN ( Strong-Named Assemblies ).
Da alle Diskussionen, die mit dem Aufstieg von Nuget begannen, darauf hinwiesen, stark benannte Assemblys vollständig loszuwerden, versuchte mein Unternehmen dies und stieß auf eine signifikante Verhaltensänderung bei den Anwendungseinstellungen:
Wenn Sie die von VisualStudio bereitgestellten Einstellungen für automatische Apps oder Anwendungen mit Benutzerbereich verwenden (System.Configuration.ApplicationSettingsBase erben), erstellt eine stark benannte EXE-Datei genau 1 Verzeichnis in% LOCALAPPDATA% mit dem Namen "YourApplication.exe_StrongName_kjsdfzsuzdfiuzgpoisdiufzsd" gelegen.
Ohne den starken Namen wird der Speicherort (= Pfad) der EXE-Datei verwendet, um einen Hash-Wert zu erstellen, der sich bereits zwischen DEBUG- und RELEASE-Build unterscheidet. Dabei werden viele Verzeichnisse in% LOCALAPPDATA% mit dem Namen "YourApplication.exe_Url_dfg8778d6fs7g6d7f8g69sdf" erstellt. Dies macht es für ClickOnce-Bereitstellungen unbrauchbar, bei denen sich das Installationsverzeichnis mit jedem Update ändert.
quelle
Ich möchte hinzufügen, dass Sie ohne einen starken Namen keine Bindungsumleitungen in Konfigurationsdateien verwenden können.
Dies wird nicht funktionieren:
Sie benötigen ein öffentliches Schlüssel-Token
quelle
Nur ein Beispiel: Ich möchte eine Antwort geben, die mehr Wert auf Sicherheit legt . Wenn wir Assemblys mit einem Quellcode erstellen, den wir nicht für Dritte wiederverwenden möchten, der aber testbar sein soll, können wir eine Assembly stark signieren und die Interna nur für die Assemblys mit dem sichtbar machen gleiche Unterschrift.
quelle