我尝试在我当前的项目中使用ServiceStack,但发现发布的二进制文件名称不强,所以我不能开箱即用。在 GitHub 上询问“为什么”时,我得到了以下答案:
神话非常简洁,所以我不想再打扰他并在这里问。我使用了很多开源 .NET 项目,如 AutoMapper、NUnit、Moq、log4net、Ninject 等,它们的版本都是强命名的。在 SO 上找到了类似的问题,但这对我没有帮助。在 OSS 中是正常做法吗?为什么不同时发布已签名和未签名的二进制文件?
我尝试在我当前的项目中使用ServiceStack,但发现发布的二进制文件名称不强,所以我不能开箱即用。在 GitHub 上询问“为什么”时,我得到了以下答案:
神话非常简洁,所以我不想再打扰他并在这里问。我使用了很多开源 .NET 项目,如 AutoMapper、NUnit、Moq、log4net、Ninject 等,它们的版本都是强命名的。在 SO 上找到了类似的问题,但这对我没有帮助。在 OSS 中是正常做法吗?为什么不同时发布已签名和未签名的二进制文件?
以下是关于为什么强命名对开源项目来说不是一个坏主意的原因的现有讨论:
https://groups.google.com/forum/?fromgroups#!topic/getglimpse-dev/pXXazMOOdjE
这是使用它的噩梦故事:
http://haacked.com/archive/2012/02/16/chang-a-strong-name-is-a-major-break-change.aspx
我个人曾在 2 个团队中经历过 2 代 Log4Net,他们试图在同一个项目中使用引用 2 个不同的 Log4Net 强名称版本的程序集 - 浪费大量时间和精力来尝试完成这项工作并不有趣,也不是我们计划让自己服从或要求所有用户的事情。
想要强名称版本的用户可以自由地签署他们自己的公共 ServiceStack 存储库的克隆/分叉。
如果有需求,我们将考虑维护我们自己的“官方签名”商业版本的库。
我认为这取决于开发人员。优点很清楚 - 任何人都可以使用强名称进行组装并在任何环境中使用它。在那种特殊情况下,我的意思是来自已签名或未签名的程序集。缺点 - ?
我认为签署二进制文件应该是一种绅士规则。
Jon Skeet 回答了类似的问题,他的意见是非常难以理解的。