14

Intenté usar ServiceStack en mi proyecto actual pero encontré que los binarios publicados no tenían un nombre fuerte así que no pude usarlo de la caja. Al preguntar en GitHub "por qué" Me dio la siguiente respuesta:Binarios de firma de proyectos de código abierto

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

mythz era muy lacónico, así que no quiero molestar lo más y pidiendo aquí. Uso muchos proyectos de .NET de código abierto como AutoMapper, NUnit, Moq, log4net, Ninject, etc. y sus lanzamientos tienen un nombre fuerte. Encontré similar question aquí, en SO, pero no me ayuda. ¿Es una práctica normal en OSS? ¿Por qué no lanzar tanto binarios con y sin firma?

Respuesta

6

He aquí un debate existente sobre motivos por los nombres fuerte es una mala idea para proyectos Open Source:

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

Aquí es una historia de pesadilla de su uso:

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

I Personalmente he estado en 2 equipos que han sufrido a través de 2 generaciones de Log4Net que han intentado usar ensambles que hacen referencia a 2 versiones fuertes de Log4Net en el mismo proyecto - Desperdiciar mucho tiempo y esfuerzo tratando de hacer que esto funcione no es divertido, ni es algo que planeamos someternos nosotros mismos o exigir a todos nuestros usuarios también.

Los usuarios que deseen una versión con nombre seguro pueden firmar su propio clon/tenedor del public ServiceStack repos.

Si hay demanda, consideraremos mantener nuestras propias versiones comerciales de nuestras bibliotecas "oficialmente censuradas".

+2

Gracias por los enlaces, bastante interesante, pero tengo que tener en cuenta que los chicos mezclan la firma y el control de versiones: ¡cosas diferentes! Aunque en .NET World Signature es parte de un nombre fuerte, no es necesario cambiar la versión cuando se lanza una nueva compilación (escenario de versión de log4net, sino que podrían usar versiones de archivos y mantener la misma versión de IL). No veo problemas para liberar binarios sin firmar, firmé con la misma versión de IL y firmé con la versión de IL incrementada. Hay opciones para que todos estén contentos, así que este es mi +1 cuando reconsideras mantener los binarios "Firmados oficialmente". – UserControl

+2

No se pueden ensamblar firmas 'authenicode' que tengan dependencias de nombres no fuertes. Personalmente, es una pesadilla * no * tener acceso fácil a ensamblajes con nombres fuertes y obstaculizar enormemente el despliegue. – Robin

+3

Me doy cuenta de que llegué un poco tarde a la fiesta aquí, pero realmente no veo el problema con la firma de las asambleas. ¿De qué manera es la firma de un problema si sigues usando la misma clave? ¿Los redireccionamientos de ensamblaje no resuelven el problema de control de versiones? – dabide

5

Creo que depende de los desarrolladores. Las ventajas son claras: cualquier persona puede tomar el ensamblaje con un nombre fuerte y usarlo en cualquier entorno. En ese caso particular me refiero a un ensamble con o sin firma. Contras - ?

Creo que debe ser una regla un poco caballero para firmar los binarios.

Jon Skeet respondió en similar question y su opinión es bastante indescifrable.

Cuestiones relacionadas