簡體   English   中英

以編程方式更新具有SVN修訂號的MFC應用程序中的FILEVERSION

[英]Programmatically updating FILEVERSION in a MFC app w/SVN revision number

如何以編程方式更新MFC應用程序中的FILEVERSION字符串? 我有一個構建過程,我用它來生成一個頭文件,其中包含給定版本的SVN rev。 我正在使用來自http://www.compuphase.com/svnrev.htm的 SvnRev來更新我用來設置我的MFC應用程序的標題欄的頭文件。 現在我想將這個#define用於我的FILEVERION信息。

什么是最好的方法?

.rc文件可以#include頭文件,就像.c文件一樣。 我有一個自動生成的version.h文件,它定義了以下內容:

#define MY_PRODUCT_VERSION    "0.47"
#define MY_PRODUCT_VERSION_NUM 0,47,0,0

然后我只有我的.rc文件#include "version.h"並使用這些定義。

VS_VERSION_INFO VERSIONINFO
 FILEVERSION MY_PRODUCT_VERSION_NUM
 PRODUCTVERSION MY_PRODUCT_VERSION_NUM
...
 VALUE "FileVersion", MY_PRODUCT_VERSION "\0"
 VALUE "ProductVersion", MY_PRODUCT_VERSION "\0"
...

我沒有嘗試過MFC項目的這種技術。 可能需要將VS_VERSION_INFO資源移動到.rc2文件(不會被Visual Studio編輯)。

沒有足夠的評論點,但無論你選擇哪種解決方案,請記住FILEVERSION字段只能支持一個短整數。 在我們的情況下,我們的SVN修訂已經高於此,並導致我們的FILEVERSION中的修訂號無效。

在您的application.rc文件中有一個版本塊。 此塊控制文件系統中顯示的版本信息。

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1

您可以通過編程方式更新此文件。 確保打開並將文件另存為二進制文件。 我們遇到過以文本形式進行編輯並且文件損壞的問題。

當您在資源管理器中右鍵單擊該文件並僅查看屬性時,更改VS_VERSION_INFO將反映出來。

如果要在標題欄中顯示當前的SVN修訂號,我建議:

  • 讓腳本獲取版本號並生成version.h文件
 #define SVN_VERSION_NO xxx 
  • 您的項目包含此version.h並使用該編號顯示在標題中。

也許這會有所幫助: Versioning Controlled Build

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM