14

Ho provato a utilizzare ServiceStack nel mio progetto corrente ma ho trovato che i binari rilasciati non avevano un nome sicuro, quindi non potevo usarlo fuori dalla scatola. Quando si chiede su GitHub "perché" ho ricevuto la seguente risposta:Firma i binari dei progetti open source

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

mythz era molto laconica quindi non volevo disturbarlo più e chiedendo qui. Uso molti progetti .NET open-source come AutoMapper, NUnit, Moq, log4net, Ninject, ecc. E le loro versioni hanno tutti un nome forte. Trovato similar question qui, su SO, ma non mi aiuta. È normale pratica in OSS? Perché non rilasciare i binari firmati e quelli non firmati?

risposta

6

Ecco una discussione esistente motivi per cui Strong Naming è una cattiva idea per progetti Open Source:

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

Ecco una storia da incubo di utilizzarlo:

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

I Sono stato personalmente in 2 team che hanno sofferto attraverso 2 generazioni di Log4Net che hanno provato a utilizzare assembly che fanno riferimento a 2 diverse versioni con un nome sicuro di Log4Net nello stesso progetto - Sprecare un sacco di tempo e sforzi cercando di rendere questo lavoro non è divertente, né è qualcosa che intendiamo sottoporre a noi stessi o che impongono a tutti i nostri utenti.

Gli utenti che desiderano una versione con nome sicuro possono firmare il proprio clone/fork dello public ServiceStack repos.

Se esiste una richiesta, prenderemo in considerazione la possibilità di mantenere le nostre versioni commerciali "ufficialmente cantate" delle nostre biblioteche.

+2

Grazie per i collegamenti, molto interessante ma devo notare che i ragazzi mescolano firma e versioning - cose diverse! Sebbene la firma mondiale di .NET sia parte del nome sicuro, non è necessario modificare la versione quando si rilascia una nuova build (scenario della versione di log4net, ma potrebbero utilizzare la versione dei file e mantenere la stessa versione di IL). Non vedo problemi nel rilasciare file binari non firmati, firmati con la stessa versione di IL e firmati con la versione di IL incrementata. Ci sono opzioni per tutti per essere felici, quindi ecco il mio +1 quando riconsiderate il mantenimento dei binari "firmati ufficialmente". – UserControl

+2

Non è possibile firmare assiemi 'authenicode' che hanno dipendenze nome non forti. Personalmente, è un incubo * non * che ha facile accesso a gruppi con un nome forte e ostacola enormemente l'implementazione. – Robin

+3

Mi rendo conto che sono un po 'in ritardo per la festa qui, ma davvero non vedo il problema con la firma degli assembly. In che modo sta firmando un problema se continui ad usare la stessa chiave? I reindirizzamenti di assembly non risolvono il problema di versione? – dabide

5

Penso che spetti agli sviluppatori. I professionisti sono chiari: chiunque può assemblare con un nome forte e usarlo in qualsiasi ambiente. In quel caso specifico intendo dal montaggio firmato o non firmato. Contro -?

Penso che dovrebbe essere una sorta di regola gentiluomo per firmare i binari.

Jon Skeet ha risposto allo stesso question e la sua opinione è abbastanza inesauribile.

Problemi correlati