7

如何以编程方式更新 MFC 应用程序中的 FILEVERSION 字符串?我有一个构建过程,用于生成包含给定版本的 SVN rev 的头文件。我正在使用来自http://www.compuphase.com/svnrev.htm的 SvnRev来更新用于设置 MFC 应用程序标题栏的头文件。现在我想将此#define 用于我的 FILEVERION 信息。

最好的方法是什么?

4

5 回答 5

14

.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 不会对其进行编辑)。

于 2008-09-20T19:13:10.363 回答
3

还没有足够的评论点,但无论您选择哪种解决方案,请记住 FILEVERSION 字段只能支持短整数。在我们的情况下,我们的 SVN 修订版已经高于此,并导致我们的 FILEVERSION 中的修订版号无效。

于 2009-04-08T18:38:57.147 回答
1

在您的 application.rc 文件中有一个版本块。该块控制文件系统中显示的版本信息。

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

您可以以编程方式更新此文件。确保打开文件并将其保存为二进制文件。我们遇到了以文本形式进行编辑并且文件损坏的问题。

于 2008-09-20T18:44:38.527 回答
0

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

于 2008-12-22T07:27:29.277 回答
0

VS_VERSION_INFO当您在资源管理器中右键单击文件并仅查看属性时,更改将反映出来。

如果您想在标题栏中显示当前的 SVN 修订号,我建议:

  • 让脚本获取版本号并生成 version.h 文件
#define SVN_VERSION_NO  xxx
  • 您的项目包含此 version.h 并使用该编号显示在标题中。
于 2008-09-20T19:05:23.720 回答