2012-09-10 126 views
4

我想完全得到我的周圍集版本和強名稱頭.NET大會版本檢查在.net

我發現This Assembly Versioning Article指出,只有Major.Minor.Build在版本匹配使用。我找不到任何可以證實/否認此事的事情。

大會版本格式 ... 修訂:
組件具有相同的名稱, 主要和次要版本號,但不同的修訂旨在 是完全互換。這將適用於修復以前發佈的程序集中的安全漏洞 。

MS Articles說這樣的話:

的程序集版本號是程序集的標識的一部分,並結合到組件和版本政策發揮關鍵作用......唯一版本檢查與發生強命名的程序集。

這是否意味着1.0.0.0和1.0.0.1在強名稱環境中可以互換,但1.0.1.1不是?

請問什麼是確切答案?

回答

2

我沒有在鏈接的文章中發現任何內容,指出在版本匹配中只使用Major.Minor.Build。事實上,一個版本的所有四個組件都被使用。

關鍵點是intended to be interchangeable。他們是否實際上可互換取決於作者,誰可以自由地尊重或忽略MS指導方針。

安裝在GAC中的共享程序集的供應商可以提供發佈程序策略文件,以便從舊版本到新版本的程序集重定向。他應該只在新版本與舊版本兼容時才這樣做。

+0

謝謝。我不應該說「陳述」。 *我*應該說明我不知道如何解釋所引用部分的影響。 – Tyst

3

該程序集的AssemblyVersion-屬性在比較版本時正在被完全評估。這意味着更改版本號的一部分將導致不匹配的程序集。要解決此

一種方式是讓AssemblyVersion -attribute始終不變e.g設置爲[AssemblyVersion("1.2.3.0")],並使用AssemblyFileVersion -attribute改變的版本,如修改,例如[AssemblyFileVersion("1.2.3.20120909")]。這使您可以在不更新所有引用的情況下更新強命名程序集的版本。

+1

「解決此問題的一種方法是讓AssemblyVersion屬性始終保持不變」 - 這並不總是可取的。例如,如果AssemblyVersion已更改,則只會更新程序集下載緩存。 – Joe