在具有SVN修订号的MFC应用程序中以编程方式更新FILEVERSION

如何以编程方式更新MFC应用程序中的FILEVERSIONstring? 我有一个生成过程,我用它来生成一个头文件,其中包含给定版本的SVN rev。 我使用从http://www.compuphase.com/svnrev.htm SvnRev更新头文件,我用它来设置我的MFC应用程序的标题栏。 现在我想用这个#define作为我的FILEVERION信息。

最好的方法是什么?

.rc文件可以像.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,并使用这个数字来显示标题。

也许这可能会有所帮助: 版本控制构建