你應該知道的程式集版本

WeihanLi發表於2018-07-19

程式集版本

一個程式集會有三個版本,每個版本都是做什麼的呢,我們來看一下,每個版本號的用途及正確用法:

版本號

示例版本號:

Major(主版本號) Minor(次版本號) Build(內部版本號) Revision(修訂號)
2 3 719 5

前兩個編號構成了公眾對版本的理解,公眾會將這個版本號視為這個程式集的2.3版本,第三個編號719時程式集的build號,如果公司每天都生成程式集,那麼每天都應該遞增這個build版本號,最後一個5指出當前build的修訂次數,如果因為某個原因,公司某一天必須要生成多次程式集(可能是為了修復一個造成其他什麼事情都幹不了的hit bug),revision 號就應該遞增, Microsoft 採用的就是這個版本編號方案,強烈建議你也採用。

AssemblyFileVersion

這個版本號儲存在 Win32 版本資源中,它僅供參考,CLR既不檢查也不關心這個版本號。通常,可以先設定好版本的 major/minor 部門,這是希望公眾看到的版本號,然後每生成一次就遞增 build 和 revision 部分。

理想情況是 Microsoft 的工具(比如csc.exe 或者 al.exe)能夠自動更新 build 和 revision(根據生成時的日期和時間)。
在 windows 系統資源管理器中能看到這個版本號,對客戶系統進行故障診斷的時候,就可以根據它識別程式集版本是多少

AssemblyInformationVersion

這個版本號也儲存在 Win32 版本資源中,同樣僅供參考,CLR既不檢查也不關心。
這個版本號的作用在於指出該程式集的產品的版本。例如,產品的2.0版本可能包含幾個程式集,其中一個程式集標記為版本1.0,因為它是新開發的,在產品的1.0版本中不存在。

通常,可以設定這個版本號的 major 和 minor 部分來代表產品的公開版本號,以後每次打包所有程式集來生成完整產品,就遞增 build 和 revision 部分。

AssemblyVersion

這個版本號儲存在 AssemblyDef 清單資料中,CLR 在繫結到強命名程式集時會用到它,這個版本很重要,它唯一標識了程式集。開始開發程式集時應該設定好 major/minor/build/revision 部分,而且除非要開發程式集的下一個可部署版本,否則不應變動。如果程式集A引用了強命名程式集B,程式集B的版本會嵌入程式集A的 AssemblyRef 表。這樣一來,當CLR需要載入程式集B時,就準確地知道當初生成和測試地是程式集B地哪個版本。

Reference

  • 《CLR via C#》第四版 — 清華大學出版社

相關文章