建置專案時讓組件的版本號碼和SVN上同步

  • 4231
  • 0

摘要:讓組件的版本號碼和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上的不一樣(原本手動修改就會有的缺點)

而且並不是每次修改程式都會改變專案檔,進而拿到新的版本號碼,因此版本號碼需經過設計才能涵蓋到有修改的部份,也才有組件和版本控管同步的意義


各位看棺如果有好的建議,也煩請各位不吝提出喔^^