如何以编程方式更新MFC应用程序中的FILEVERSION字符串?我有一个构建过程,我用它来生成一个头文件,其中包含给定版本的SVN rev。我正在使用来自http://www.compuphase.com/svnrev.htm的SvnRev来更新我用来设置我的MFC应用程序的标题栏的头文件。现在我想将这个#define用于我的FILEVERION信息。
最好的方法是什么?
答案 0 :(得分:13)
.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不会对其进行编辑)。
答案 1 :(得分:3)
还没有足够的评论来评论,但无论你选择什么解决方案,请记住FILEVERSION字段只能支持一个短整数。在我们的情况下,我们的SVN版本已经高于此值,导致我们的FILEVERSION版本号无效。
答案 2 :(得分:1)
在你的application.rc文件中有一个版本块。该块控制文件系统中显示的版本信息。
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
您可以通过编程方式更新此文件。确保打开并将文件另存为二进制文件。我们遇到过以文本形式进行编辑并且文件损坏的问题。
答案 3 :(得分:0)
更改VS_VERSION_INFO
将反映当您在资源管理器中右键单击该文件并仅查看属性时。
如果您想在标题栏中显示当前的SVN修订号,我建议:
#define SVN_VERSION_NO xxx
答案 4 :(得分:0)
也许这会有所帮助:Versioning Controlled Build