Visual Studio自动生成文件版本信息

一、     前言

通常,要控制输出文件的版本信息,只需要手动修改资源rc文件中的Version,即可在输出文件的文件属性里查看到对应的版本信息。如下图:

  

 

 但是,版本号是会随时都更新的,每次build都需要手动修改,显然有点麻烦。下面以SA_CMS项目为例,详细说明了如何利用subversion的命令行工具和一些宏来达到自动版本控制的目的步骤。

二、     自动版本控制

Step1

在.vcproj所在目录下,新建一个文本文件,命名为Version.def,然后添加如下宏信息:

 1 #define MAJOR_VERSION 1
 2 
 3 #define MINOR_VERSION 0
 4 
 5 #define INNER_VERSION 0
 6 
 7 #define REV_VERSION   $WCREV$
 8 
 9  
10 
11 #define _VER2STR(ver) #ver
12 
13 #define VER2STR(ver) _VER2STR(ver)
14 
15  
16 
17 #define VERSION  VER2STR(MAJOR_VERSION) \
18 
19                      "."VER2STR(MINOR_VERSION) \
20 
21                      "."VER2STR(INNER_VERSION) \
22 
23                      "."VER2STR(REV_VERSION)
24 
25  
26 
27 #define MAKE_DATETIME_SVN           $WCNOW$
28 
29 #define MAKE_DATETIME        VER2STR(MAKE_DATETIME_SVN)
30 
31  
32 
33 #define PRODUCT_NAME                       "XXXXX系统"
34 
35 #define PRODUCT_VER_VAL                  1,0,0,0
36 
37 #define PRODUCT_VER_STR                  "1.0.0.0\0"
38 
39 #define COMPANY_NAME                      "AAAAAA Co., Ltd."
40 
41 #define LEGAL_COPYRIGHT                    "Copyright (C) 2015 AAAAAA Co., Ltd."
42 
43  
44 
45 #define FILE_VERSION_VAL    MAJOR_VERSION,MINOR_VERSION,INNER_VERSION,REV_VERSION
46 
47 #define FILE_VERSION_STR     VER2STR(MAJOR_VERSION.MINOR_VERSION.INNER_VERSION.REV_VERSION)
48 
49 #ifdef WIN64
50 
51 #define FILE_DESC                       "SA_CMS 动态链接库(64 bit)"
52 
53 #else
54 
55 #define FILE_DESC                       "SA_CMS 动态链接库(32 bit)"
56 
57 #endif
58 
59 #define ORIGINAL_FILE_NAME            ""
60 
61 #define FILE_COMMENTS                      ""
View Code

 

注意:版本号的数值是以逗号“,”隔开,而版本号字符串的值是以“.”隔开

Step2

在工程的属性页,增加预生成事件命令行 SubWCRev ./ ./Version.def  ./Version.h

工程在build之前,会在同一个目录下自动通过subversion 生成一个Version.h头文件。

如图:

 

 

Step3

打开添加资源对话框,双击Version,自动添加Version资源rc文件到VS工程。

 

 

Step4

在resource.h里最后添加一句 #include “Version.h”,并以换行结尾。

 

 

Step5

右键打开资源rc文件,查看代码

 

 

Step6

找到Version段,根据需要,用Version.h里面的宏替换版本信息相应的字段,然后保存。

 

最后build一下工程。输出文件的文件版本属性如下:

 

posted @ 2015-05-27 21:35  流雨飞雪  阅读(3059)  评论(0编辑  收藏  举报