C# VS2008, VS2010 .NET 使用 SVN 的自動生成版本號
阿新 • • 發佈:2019-01-26
步驟/方法
-
編寫一個模板檔案,比如取名為 version_template.h,內容如下
#ifndef _VERSION_H_
#define _VERSION_H_
#define VER_MAJOR 1
#define VER_MINOR 0
#define VER_REVISION $WCREV$
#endif //!_VERSION_H_ - 找到subwcrev.exe 可執行檔案,一般在 svn 客戶端的安裝目錄下,比如TortoiseSVN 是在其安裝目錄的bin資料夾下。這裡,筆者將subwcrev.exe 複製到了程式碼工程目錄下,方便使用。
-
在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 呼叫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_ - 在程式中需要顯示版本號的地方,引用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$" )]
後續如上命令操作