14

我試圖在我當前的項目中使用ServiceStack,但發現發佈的二進制文件名稱不夠強,所以我無法使用它。當在GitHub上問「爲什麼」,我得到了以下的答案:對開源項目的二進制文件簽名

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

mythz是非常簡潔的,所以我不想打擾他越來越要求在這裏。我使用了許多開源.NET項目,如AutoMapper,NUnit,Moq,log4net,Ninject等,它們的發佈都是強命名的。在這裏發現了similar question,但它對我沒有幫助。 OSS是否正常?爲什麼不釋放簽名和未簽名的二進制文件?

回答

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

我曾經親自參加過兩代遭受兩代Log4Net攻擊的團隊,他們試圖在同一個項目中使用引用兩個不同強名稱的Log4Net的程序集 - 浪費大量時間和精力努力完成這項工作並不好玩,也不是我們計劃自己承擔責任或強制所有用戶的事情。

想要強名稱版本的用戶可以自由簽署public ServiceStack repos自己的克隆/分支。

如果有需求,我們會考慮維護我們自己的「正式燒錢」商業版本的圖書館。

+2

感謝您的鏈接,相當有趣,但我必須注意到,這些人混合簽名和版本 - 不同的事情!儘管在.NET中,世界簽名是強名的一部分,但在發佈新版本時不需要更改版本(log4net版本方案;相反,它們可以使用文件版本控制並保持IL版本相同)。我發現釋放未簽名的二進制文件沒有問題,使用相同的IL版本簽名,並使用遞增的IL版本進行簽名。所有人都可以選擇快樂,因此當您重新考慮維護「官方簽名」二進制文件時,這裏是我的+1。 – UserControl 2012-07-26 06:02:34

+2

您不能'驗證'具有非強名稱依賴性的標誌組件。就個人而言,這是一場噩夢*而非*易於訪問強大的命名組合並大量妨礙部署。 – Robin 2013-10-11 13:50:25

+3

我意識到我在這裏參加派對有點遲,但我真的沒有看到簽署裝配的問題。如果您繼續使用相同的密鑰,以什麼方式簽署問題?不要使用匯編重定向來解決版本控制問題? – dabide 2013-10-24 21:34:04

5

我認爲這取決於開發人員。優點是明確的 - 任何人都可以以強大的名稱進行組裝,並在任何環境中使用它。在這個特殊情況下,我的意思是從簽名或未簽名的程序集。缺點 - ?

我認爲它應該是一個有點紳士規則簽署二進制文件

喬恩Skeet回答類似question和他的意見是相當難以忍受的。

相關問題