軟件版本號定義、自動編號和相關的Visual Studio插件


前兩篇文章在編譯配置ClickOnce發布Winform的時候都遇到了軟件版本號的設置,這篇文章就來說說軟件版本號的設置原則。

1. 軟件版本號的定義

軟件版本號主要標識了軟件的版本,通過其可以了解軟件、類庫文件的當前版本,使得軟件版本控制有所依據。

我們就Windows系統和.NET Framework的編號規則來看,軟件版本號的定義結構一般是這樣:

主版本號.子版本號.編譯版本號.修正版本號

我們也可以在項目屬性上可以看到相關設置的界面,對應的英文名稱分別為:major.minor.build.revision

Major:具有相同名稱但不同主版本號的程序集不可互換。例如,這適用於對產品的大量重寫,這些重寫使得無法實現向后兼容性。當有極大的更新時,會增加major的版號。

Minor:如果兩個程序集的名稱和主版本號相同,而次版本號不同,這指示顯著增強,但照顧到了向后兼容性。例如,這適用於產品的修正版或完全向后兼容的新版本。而當有大更新,但不至於更新major時,會更新minor的版號。

Build:內部版本號的不同表示對相同源所作的重新編譯。這適合於更改處理器、平台或編譯器的情況。若更新比較小,例如只是除蟲(bug fixing),則會更新build的版號。

Revision:名稱、主版本號和次版本號都相同但修訂號不同的程序集應是完全可互換的。這適用於修復以前發布的程序集中的安全漏洞。程序集的只有內部版本號或修訂號不同的后續版本被認為是先前版本的修補程序 (Hotfix) 更新。當在同一個Build下需要重新編譯,那么就需要增加Revision即可。

所以一般的版本信息設置看起來應該是這樣:

1
1.1
1.1.*
1.1.1
1.1.1.*
1.1.1.1

2. .NET里自動編號的方法

在設置頁面里有一個是程序集版本號,一個是文件版本號。文件版本號主要用來為文件做標識,而程序集版本號用於CLR識別使用。

在我們確定了主版本號和子版本號后,編譯版本號和修正版本號就需要在每次編譯的時候去變動了,這樣在程序測試、排錯時才能快速定位到使用的是哪個編譯出的版本,而不僅僅是通過文件創建時間去辨別。

在.NET里面提供了一個方法去自動對編譯版本號和修正版本號進行設置的方法。

首先我們需要知道通過界面設置的版本信息是存儲在項目里的AssemblyInfo.cs文件里的。

默認的設置是這樣。

1 [assembly: AssemblyVersion("1.0.0.0")]
2 [assembly: AssemblyFileVersion("1.0.0.0")]

我們需要將主版本號和子版本號填寫好,因為這部分是不會頻繁變動的,而編譯版本使用通配符*代替,並將文件版本信息注釋掉,設置起來像這樣。

1 [assembly: AssemblyVersion("1.0.*")]
2 //[assembly: AssemblyFileVersion("1.0.0.0")]

這樣設置后生成的規則就是:編譯版本號是自2000年2月1日以來的天數,而修正版本號會是自午夜零點以來的秒數除以2所得的值。

我們看一個編譯后的結果。


3. 相關的Visual Studio插件

上面.NET提供自動編號的方法在解決方案里有很多項目且想統一管理其版本號時就不能滿足需求了,要保持統一就要每次編譯前手動統一所有的版本信息了。

還好我們找到了一個插件:Versioning Controlled Build ,這里是作者的CodeProject上面的主頁,里面有項目和使用方法的介紹。

在這里面可以統一管理解決方案里面的所有項目,可以按照自己的項目統一修改對應的版本號。

而在插件設置里面還提供了更多的選項已滿足不同的自動編號需求。

更多的功能各位可以按照自己的需求去摸索與配置了。

因為CodeProject下載需要注冊登錄,為了方便下載我把插件放在了這里,點擊下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM