签署开源项目的二进制文件

Use*_*rol 14 .net open-source code-signing assembly-signing code-signing-certificate

我试图在我当前的项目中使用ServiceStack,但发现发布的二进制文件名称不强,所以我无法使用它开箱即用.当询问GitHub"为什么"时,我得到了以下答案:

它具有病毒毒性,阻碍了绑定,升级,开发,部署等.

mythz非常简洁,所以我不想再打扰他,并在这里问.我使用了许多开源.NET项目,如AutoMapper,NUnit,Moq,log4net,Ninject等,他们的版本都是强大的命名.在这里找到类似的问题,但这对我没有帮助.这是OSS的正常做法吗?为什么不发布签名和未签名的二进制文件?

myt*_*thz 6

以下是关于强命名对开源项目不好的原因的现有讨论:

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

这是一个使用它的噩梦故事:

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

我亲自参加过2代Log4Net的团队,他们试图在同一个项目中使用引用2个不同强名称Log4Net的程序集 - 浪费了大量时间和精力试图让这项工作变得不好玩也不是我们计划对自己或我们所有用户进行授权的事情.

想要具有强名称版本的用户可以自由签署他们自己的公共ServiceStack存储库的克隆/分支.

如果有需求,我们会考虑维护我们自己的"官方记录"商业版本的图书馆.

  • 我意识到我在派对上有点迟了,但我真的没有看到签署程序集的问题.如果您继续使用相同的密钥,以什么方式签署问题?组装重定向不解决版本控制问题吗? (3认同)
  • 感谢链接,非常有趣,但我必须注意,这些人混合签名和版本 - 不同的东西!虽然在.NET中,世界签名是强名称的一部分,但在发布新版本时不必更改版本(log4net版本场景;相反,他们可以使用文件版本控制并保持IL版本相同).我发现发布未签名的二进制文件没有问题,使用相同的IL版本签名并使用递增的IL版本进行签名.所有人都可以选择幸福,所以当你重新考虑维护"正式签名"二进制文件时,这里是我的+1. (2认同)
  • 您不能'authenicode'签署具有非强名称依赖关系的程序集.就个人而言,这是一场噩梦*不能轻易访问强大的命名程序集并大大阻碍部署. (2认同)

Ser*_*kov 5

我认为这取决于开发人员.优点很明显 - 任何人都可以使用强名称组装并在任何环境中使用它.在这种特殊情况下,我的意思是签名或未签名的程序集.缺点 - ?

我认为签署二进制文件应该是一种绅士规则.

Jon Skeet回答了类似的问题,他的观点非常不合理.