給VC程式新增版本號與編譯時間

2021-07-10 02:50:04 字數 1556 閱讀 5854

一般來說,發布的正式軟體都會包含程式的svn版本號以及軟體的編譯版本和編譯時間等資訊,但是這些東西並不是預設就存在的,需要我們進行一些步驟的處理。具體做法有幾種,萬變不離其宗的是,利用svn自帶的指令獲取到版本號以及當前時間,填充模板當中的佔位符,最後用替換後的模板覆蓋資源檔案即可。這裡只講最簡單的一種:

a. 首先需要給vc程式新增資源檔案,假設程式名為test,則資源檔案為test.rc

b. 向資源檔案中新增新的資源項——version,資源檔案用記事本開啟,增加了如下**:

vs_version_info versioninfo

fileversion 1,0,0,1

productversion 1,0,0,1

fileflagsmask 0x17l

#ifdef _debug

fileflags 0x1l

#else

fileflags 0x0l

#endif

fileos 0x4l

filetype 0x1l

filesubtype 0x0l

begin

block "stringfileinfo"

begin

block "080404b0"

begin

value "filedescription", "test"

value "fileversion", "1, 1, 1, 0"

value "internalname", "test"

value "originalfilename", "test.exe"

value "productname", "microsoft"

value "productversion", "v1.0"

endend

block "varfileinfo"

begin

value "translation", 0x804, 1200

endend

c. 接下來建立乙個模板,利用svn提供的佔位符wcr

ev

wcrev

wcre

v獲取版本號,wcn

ow

wcnow

wcno

w獲取編譯時間。模板可以直接複製test.rc檔案,更名為test.rc2。修改上述**中的productversion的值即可:

value "productversion", "v2.1.1.$wcrev$.(build$wcnow$)"
d. 那麼何時進行佔位符的替換,隨後替換程式的資源檔案test.rc,準確的將版本號與編譯時間編譯程序式呢?vs提供了乙個build events配置,我們選擇pre-build event,增加一行**如下:

subwcrev $(projectdir) $(projectdir)\test.rc2 $(projectdir)\test.rc
**的意思是在程式編譯之前,用svn的指令碼工具subwcrev獲取到工程目錄的svn號以及當前的編譯時間,替換rc2檔案中的佔位符,覆蓋到rc檔案中。

golang程式新增版本號

這段時間專案經常發布版本,導致我們版本管理混亂。特別是在真實環境上面,沒有了版本控制軟體協助版本管理,我們無法確認程式到底是新版本還是舊版本。這給我們排查問題帶來了很大困擾。於是,我就想給程式本身打上版本號,通過程式就可以看到程式是新版本還是舊版本了。檢視資料發現golang不能像c 那樣通過巨集定...

C 基於編譯時間自動生成版本號

我們希望每次編譯發布程式都有不同的版本號。但是每次編譯都需要修改版本號特別麻煩。本文介紹一種基於編譯時間生成版本號的方法。c c 編譯器會內建有兩個獲取編譯時間的巨集 date 和 time include int main void 輸出 date may 14 2020 time 19 34 5...

C 獲取程式集自動增加的版本號和編譯時間

1.首先找到檔案assemblyinfo.cs,路徑如下 2.修改版本的格式,修改後,程式每次編譯,程式集的版本號都會自增。修改前 assembly assemblyversion 1.0.0.0 assembly assemblyfileversion 1.0.0.0 修改後 assembly a...