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


但是,版本号是会随时都更新的,每次build都需要手动修改,显然有点麻烦。下面以SA_CMS项目为例,详细说明了如何利用subversion的命令行工具和一些宏来达到自动版本控制的目的步骤。
二、
自动版本控制
Step1
在.vcproj所在目录下,新建一个文本文件,命名为Version.def,然后添加如下宏信息:
#define MAJOR_VERSION 1
#define MINOR_VERSION 0
#define INNER_VERSION 0
#define REV_VERSION $WCREV$
#define _VER2STR(ver) #ver
#define VER2STR(ver) _VER2STR(ver)
#define VERSION VER2STR(MAJOR_VERSION) \
"."VER2STR(MINOR_VERSION) \
"."VER2STR(INNER_VERSION) \
"."VER2STR(REV_VERSION)
#define MAKE_DATETIME_SVN $WCNOW$
#define MAKE_DATETIME VER2STR(MAKE_DATETIME_SVN)
#define PRODUCT_NAME "XXXXX系统"
#define PRODUCT_VER_VAL 1,0,0,0
#define PRODUCT_VER_STR "1.0.0.0\0"
#define COMPANY_NAME "AAAAAA Co., Ltd."
#define LEGAL_COPYRIGHT "Copyright (C) 2015 AAAAAA Co., Ltd."
#define FILE_VERSION_VAL MAJOR_VERSION,MINOR_VERSION,INNER_VERSION,REV_VERSION
#define FILE_VERSION_STR VER2STR(MAJOR_VERSION.MINOR_VERSION.INNER_VERSION.REV_VERSION)
#ifdef WIN64
#define FILE_DESC "SA_CMS 动态链接库(64 bit)"
#else
#define FILE_DESC "SA_CMS 动态链接库(32 bit)"
#endif
#define ORIGINAL_FILE_NAME ""
#define FILE_COMMENTS ""
注意:版本号的数值是以逗号“,”隔开,而版本号字符串的值是以“.”隔开
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一下工程。输出文件的文件版本属性如下:

Visual Studio自动生成文件版本信息的更多相关文章
- Visual Studio自动生成XML类和JSON类
Visual Studio 2013及以上版本提供了一个非常实用的功能.可以根据xml文档或json文档自动生成类.有了这个工具反序列化时就不用再手动写类并且实现了强类型操作. 步骤 1. 准备一份j ...
- 让Visual Studio 自动添加头部注释信息
在日常的开发过程中我们经常需要为我们的类文件添加注释和版权等信息,以前都是将信息文本复制.粘贴,要是添加一两个个还好,要是添加很多就显得很麻烦了.为了减少这种重复性的工作,有没有好的解决办法呢?答案是 ...
- 如何给 Visual Studio 的输出程序添加版本信息
出处:https://stackoverflow.com/questions/284258/how-do-i-set-the-version-information-for-an-existing-e ...
- Visual Studio动态生成版权信息
Visual Studio动态生成版权信息 VS2008 1.1,类文件模板:在安装目录打开CS模板文件夹(D:\Program Files (x86)\Microsoft Visual Studio ...
- Visual Studio 不生成.vshost.exe和.pdb文件的方法【转】
Visual Studio 不生成.vshost.exe和.pdb文件的方法[转] 使用Visual Studio编译工程时,默认设置下,即使选择了「Release」时也会生成扩展名为「.vshost ...
- 用shell脚本新建shell文件并自动生成头说明信息
目标: 新建文件后,直接给文件写入下图信息 代码实现: [root@localhost test]# vi AutoHead.sh #!/bin/bash#此程序的功能是新建shell文件并自动生成头 ...
- 用shell脚本新建文件并自动生成头说明信息
目标: 新建文件后,直接给文件写入下图信息 代码实现: [root@localhost test]# vi AutoHead.sh #!/bin/bash #此程序的功能是新建shell文件并自动生成 ...
- Visual Studio 2012 与此版本的 Windows 不兼容。有关详细信息,请联系 Microsoft
参考网址:Visual Studio 2012 与此版本的 Windows 不兼容 解决 下载更新包安装:http://www.microsoft.com/zh-CN/download/details ...
- 让InstallShield 2015 Limited Edition for Visual Studio 2015生成的setup.exe双击时以管理员权限运行
转载:http://blog.csdn.net/zztoll/article/details/52096700 如题,如何让InstallShield 2015 Limited Edition for ...
随机推荐
- 【SQL Server】SQL常用系统函数
SQL常用系统函数 函数类型 函数表达式 功能 应用举例 字符串函数 SubString(表达式,起始,长度) 取子串 SubString('ABCDEFG',3,4) Right(表达式,长度) 右 ...
- Python MySQLdb的execute和executemany的使用
如果使用executemany对数据进行批量插入的话,要注意一下事项: conn = MySQLdb.connect(host = “localhost”, user = “root”, passwd ...
- 分析Tapjoy的模式—分发用于ios设备的企业级应用程序
下面简单介绍下Tapjoy的模式,供大家参考: Tapjoy最初的合作模式:“按安装奖励”(pay-per-install) Tapjoy利用非常成功的奖励性下载模式影响了App Store的免费游戏 ...
- 【bzoj4408】[Fjoi 2016]神秘数 主席树
题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1+1+14 = 45 = 4+16 = 4+1+1 ...
- POJ 1502 MPI Maelstrom【floyd】
题目大意:求点1到所有点最短路径的最大值 思路:水题,单源最短路,网上解题清一色dijkstra,但是点数小于100显然floyd更简洁嘛 #include<cstdio> #includ ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋【暴力】
Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. Input 第一行为 ...
- 区间翻转(codevs 3243)
题目描述 Description 给出N个数,要求做M次区间翻转(如1 2 3 4变成4 3 2 1),求出最后的序列 输入描述 Input Description 第一行一个数N,下一行N个数表示原 ...
- UVa10234 Race
递推,设有i个人排在第一名,剩下的人排在后面,方案有f[i]种,则f[i]=sum(c[n][i]*f[n-i]) 1<=i<=n /*by SilverN*/ #include<a ...
- angular中事件戳转日期的格式
本地化日期格式化: ({{ today | date:'medium' }})Nov 19, 2015 3:57:48 PM ({{ today | date:'short' }})11/19/15 ...
- db2 获取自增主键的方法
1.用SEQUENCES方式 建表语句 CREATE TABLE TEST1( PKEY INTEGER NOT NULL, NAME VARCHAR(100), SEX VARCHAR(100), ...