繁体   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