1. 生成一個名爲autover的項目ui
注意項目的Properties文件夾下有一個名爲AssemblyInfo.cs的文件,autover程序的版本號就寫在它裏面。調試
2. 建立模板文件資源
在Windows的資源管理器中進入Properties文件夾,把AssemblyInfo.cs文件複製一份,命名爲AssemblyInfo.template.cs,並把它加入到項目中來。rem
3. 修改AssemblyInfo.template.cs的屬性it
AssemblyInfo.template.cs文件是用來自動生成版本號的模板文件,它不該該被編譯,因此咱們要把它的Build Action改爲None,以下圖所示:io
4. 修改AssemblyInfo.template.cs的內容編譯
在這個文件中,你能找到以下兩行代碼:event
[assembly: AssemblyVersion( "1.0.0.0" )]模板
[assembly: AssemblyFileVersion( "1.0.0.0" )] 配置
其中的「1.0.0.0」就是程序的版本號,它使用的是「主版本號.次版本號.內部版本號.修訂號」的形式。前三個改爲你本身須要的數字,最後一個改爲「$WCREV$」,改完以後應該是相似下面的樣子:
[assembly: AssemblyVersion( "1.0.0.$WCREV$" )]
[assembly: AssemblyFileVersion( "1.0.0.$WCREV$" )]
在這個文件的最後,你還應該加上下面兩段代碼,它們能夠檢測出有本地修改(修改了但沒有提交)的代碼和有混合版本的代碼。
#if $WCMIXED?true:false$
#if DEBUG
#warning mixed update revisions founded
#else
#error mixed update revisions founded
#endif
#endif
#if $WCMODS?true:false$
#if DEBUG
#warning local modification founded
#else
#error local modification founded
#endif
#endif
5. 修改項目屬性
在項目屬性的Build Event頁的Pre-build event command line中輸入:
"%ProgramFiles%/TortoiseSVN/bin/SubWCRev.exe" $(SolutionDir) $(ProjectDir)Properties/AssemblyInfo.template.cs $(ProjectDir)Properties/AssemblyInfo.cs -f
注意,這裏咱們必須保證TortoiseSVN安裝到了默認路徑上。在多人蔘加的項目中這應該是強制性的要求,不然,你們安裝的路徑都不同,甲機器上能用的配置,到了乙機器上可能就不行了。
而後,你可能還須要將Publish頁中的Automatically increment revision with each publish選項關掉(我不肯定這步是否必須)。C#能夠本身遞增版本號,但它生成的版本號和代碼庫中的代碼沒有對應關係,我我的以爲意義不大。而且它 還可能會把咱們的版本自增機制搞亂。因此應該關掉。
6. 把項目加入版本庫
使用VisualSVN的Add solution to Subversion命令把項目加入SVN,但不要提交。
7. 從SVN中排除AssemblyInfo.cs文件
每次編譯時,這個文件都會基於AssemblyInfo.template.cs從新生成,因此不必加入版本庫。這步作完以後就能夠提交整個項目了。
8. 編譯
編譯完成後,看一下生成的autover.exe文件的版本信息,本例中是1.0.0.1。隨便改點什麼,提交,從新編譯,你會發現它自動 變成了1.0.0.2,也就是程序的修訂號老是與生成它的代碼的修訂號一致。這樣,當程序出問題後,咱們經過這個數字就能輕鬆獲得生成它的那一版代碼了。
9. 其它問題
第8步中你們作完修改後再編譯時可能會看到警告或錯誤信息,說代碼有本地修改或混合版本。這就是第4步中,在 AssemblyInfo.template.cs文件最後加的兩段代碼的做用,它們檢測代碼是否都已經提交了而且版本是否一致,一旦發現問題就會在調試 版中生成警告信息,在發佈版中生成錯誤信息。使用這種方法,咱們能夠基本消除發佈的程序的版本和代碼的版本出現不一致的可能性。去掉這兩個錯誤或警告的方 法也很簡單,把代碼總體提交或更新一下就好了。