14

Ich habe versucht, ServiceStack in meinem aktuellen Projekt zu verwenden, fand aber die freigegebenen Binärdateien waren nicht stark benannt, so dass ich es nicht aus der Box verwenden konnte. Wenn auf GitHub zu fragen „warum“ Ich bekam folgende Antwort:Binärdateien von Open-Source-Projekten signieren

it's virally toxic and hinders binding, upgrading, development, deployment, etc.

mythz war sehr lakonisch so habe ich ihn nicht mehr belästigen wollen und fragen hier. Ich benutze viele Open-Source-.NET-Projekte wie AutoMapper, NUnit, Moq, Log4net, Ninject, etc. und ihre Veröffentlichungen sind alle stark benannt. Gefunden similar question hier auf SO, aber es hilft mir nicht. Ist das bei OSS üblich? Warum nicht beide signierten und unsignierten Binärdateien freigeben?

Antwort

6

Hier ist eine bestehende Diskussion über die Gründe, warum Strong Naming eine schlechte Idee für Open-Source-Projekte ist:

https://groups.google.com/forum/?fromgroups#!topic/getglimpse-dev/pXXazMOOdjE

Hier ist ein Alptraum Geschichte, die es verwenden:

http://haacked.com/archive/2012/02/16/changing-a-strong-name-is-a-major-breaking-change.aspx

I Ich war persönlich in 2 Teams, die 2 Log4Net-Generationen durchlitten haben, die versucht haben, Assemblies zu verwenden, die auf 2 verschiedene Log4Net-Versionen mit starkem Namen im selben Projekt verweisen - Viel Zeit und Mühe zu verschwenden, um diese Arbeit zu machen, macht keinen Spaß, noch ist es etwas, was wir uns selbst unterstellen wollen oder auch all unseren Benutzern vorschreiben.

Benutzer, die eine strong-named Version haben möchten, können ihren eigenen Klon/Fork des public ServiceStack repos signieren.

Wenn Bedarf besteht, werden wir in Erwägung ziehen, unsere eigenen "Offiziell Singed" kommerziellen Versionen unserer Bibliotheken zu unterhalten.

+2

Danke für die Links, ziemlich interessant, aber ich muss beachten, dass die Jungs Signieren und Versionieren mischen - verschiedene Dinge! Obwohl die .NET-Welt-Signatur Teil eines starken Namens ist, muss man die Version bei der Veröffentlichung eines neuen Builds nicht ändern (log4net-Versionszenario; stattdessen könnten sie die Dateiversionierung verwenden und die IL-Version unverändert beibehalten). Ich sehe keine Probleme, nicht signierte Binaries zu veröffentlichen, mit derselben IL-Version signiert und mit inkrementierter IL-Version signiert. Es gibt Möglichkeiten für alle, glücklich zu sein, also hier ist meine +1, wenn Sie überdenken, "offiziell signierte" Binärdateien zu pflegen. – UserControl

+2

Sie können Assemblys, die nicht starke Namensabhängigkeiten aufweisen, nicht "authentifizieren". Persönlich ist es ein Albtraum * nicht * einfachen Zugriff auf starke benannte Assemblys zu haben und die Bereitstellung massiv zu behindern. – Robin

+3

Mir ist klar, dass ich hier zu spät zur Party komme, aber ich sehe das Problem mit der Unterzeichnung der Assemblys wirklich nicht. Auf welche Weise signiert man ein Problem, wenn man den gleichen Schlüssel benutzt? Korrigieren Assembly-Umleitungen das Versionierungsproblem nicht? – dabide

5

Ich denke, es liegt an den Entwicklern. Die Vorteile sind klar - jeder kann die Baugruppe mit einem starken Namen verwenden und in jeder Umgebung verwenden. In diesem speziellen Fall meine ich eine signierte oder nicht signierte Assembly. Nachteile -?

Ich denke, sollte es ein bisschen Gentleman Regel sein, um Binärdateien zu unterzeichnen.

Jon Skeet antwortete auf ähnliche question und seine Meinung ist ziemlich unverständlich.