1. 程式人生 > >C# VS2008, VS2010 .NET 使用 SVN 的自動生成版本號

C# VS2008, VS2010 .NET 使用 SVN 的自動生成版本號

步驟/方法

  1. 編寫一個模板檔案,比如取名為 version_template.h,內容如下
    #ifndef _VERSION_H_
    #define _VERSION_H_
    #define VER_MAJOR 1
    #define VER_MINOR 0
    #define VER_REVISION $WCREV$
    #endif //!_VERSION_H_
  2. 找到subwcrev.exe 可執行檔案,一般在 svn 客戶端的安裝目錄下,比如TortoiseSVN 是在其安裝目錄的bin資料夾下。這裡,筆者將subwcrev.exe 複製到了程式碼工程目錄下,方便使用。
  3. 在VS2005的專案屬性頁->預生成事件->命令列中新增一句:
    $(SolutionDir)\subwcrev.exe $(SolutionDir) $(SolutionDir)\src\qmlv\version_template.h $(SolutionDir)\src\qmlv\version.h$(ProjectDir)SubWCRev.exe  不能有空格或$(SolutionDir)   $(ProjectDir)Properties\AssemblyInfo.template.cs  $(ProjectDir)Properties\AssemblyInfo.cs
    SubWCRev 呼叫語法:
    SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile]
    怎樣在VS2005下里用SVN的SubWCRev自增修訂號
  4. 這樣,程式碼編譯通過後,預生成事件被觸發,VS2005 呼叫SubWCRev.exe程式,替換version_template.h中的巨集$WCREV$為當前的svn修訂號,並另存為version.h檔案,version.h 會類似於:
    #ifndef _VERSION_H_
    #define _VERSION_H_
    #define VER_MAJOR 1
    #define VER_MINOR 0
    #define VER_REVISION 2821
    #endif //!_VERSION_H_
  5. 在程式中需要顯示版本號的地方,引用VER_REVISION 巨集即可。

c#

在windows的資源管理器中進入Properties資料夾,把AssemblyInfo.cs檔案複製一份,命名為AssemblyInfo.template.cs,並把它加入到專案中來。

3. 修改AssemblyInfo.template.cs的屬性

AssemblyInfo.template.cs檔案是用來自動生成版本號的模板檔案,它不應該被編譯,所以我們要把它的Build Action改成None,如下圖所示:

修改AssemblyInfo.template.cs的內容

在這個檔案中,你能找到如下兩行程式碼:

[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$" )]

 後續如上命令操作