摘要:讓組件的版本號碼和SVN上同步
之前一直都是手動修改專案屬性裡的版本號碼,讓它和SVN上面的版本號碼一樣,一旦專案多一點,還真的是很煩的一件事
想說上網找找看有沒有類似修改Assembly.cs的文章,結果都只有看到讀取的
在最後差點要開始寫讀檔程式的時候,就在對岸網站上看到了一篇使用TortoiseSVN提供的SubWCRev.exe來達到同步的文章
原文是採用bat檔的方式執行,但我想其實並不用,範例如下:
1.將現有的AssemblyInfo.cs複製一份更名為AssemblyInfo.cs.tpl,並修改裡面的版本區段內容後放在專案Properties資料夾裡,例如:
[assembly: AssemblyFileVersion("1.0.0.$WCREV$")]
其中的$WCREV$就是在執行SubWCRev.exe之後要寫入的SVN版本號碼
2.將SubWCRev.exe $(ProjectDir)$(ProjectFileName) $(ProjectDir)Properties\AssemblyInfo.cs.tpl $(ProjectDir)Properties\AssemblyInfo.cs
這段文字輸入在專案屬性的建置前事件命令列裡,使其能在專案建置前執行
這裡SubWCRev.exe後面所帶的參數意義是:
$(ProjectDir)$(ProjectFileName):即專案檔,表示等等要擷取並寫入的是專案檔在SVN上面的版本號碼
$(ProjectDir)Properties\AssemblyInfo.cs.tpl:即寫入版本號碼所要參考的範本檔案,就是剛剛複製並更名的AssemblyInfo.cs.tpl檔案
$(ProjectDir)Properties\AssemblyInfo.cs:即最後產生的AssemblyInfo.cs檔
以上各參數需用空白隔開,更詳盡的參數設定可以執行SubWCRev.exe查看
3.建置專案看成果!
缺點是要在專案Commit之後再建置專案產生組件,所以Assembly.cs檔永遠和SVN上的不一樣(原本手動修改就會有的缺點)
而且並不是每次修改程式都會改變專案檔,進而拿到新的版本號碼,因此版本號碼需經過設計才能涵蓋到有修改的部份,也才有組件和版本控管同步的意義
各位看棺如果有好的建議,也煩請各位不吝提出喔^^