一、     前言

通常,要控制输出文件的版本信息,只需要手动修改资源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自动生成文件版本信息的更多相关文章

  1. Visual Studio自动生成XML类和JSON类

    Visual Studio 2013及以上版本提供了一个非常实用的功能.可以根据xml文档或json文档自动生成类.有了这个工具反序列化时就不用再手动写类并且实现了强类型操作. 步骤 1. 准备一份j ...

  2. 让Visual Studio 自动添加头部注释信息

    在日常的开发过程中我们经常需要为我们的类文件添加注释和版权等信息,以前都是将信息文本复制.粘贴,要是添加一两个个还好,要是添加很多就显得很麻烦了.为了减少这种重复性的工作,有没有好的解决办法呢?答案是 ...

  3. 如何给 Visual Studio 的输出程序添加版本信息

    出处:https://stackoverflow.com/questions/284258/how-do-i-set-the-version-information-for-an-existing-e ...

  4. Visual Studio动态生成版权信息

    Visual Studio动态生成版权信息 VS2008 1.1,类文件模板:在安装目录打开CS模板文件夹(D:\Program Files (x86)\Microsoft Visual Studio ...

  5. Visual Studio 不生成.vshost.exe和.pdb文件的方法【转】

    Visual Studio 不生成.vshost.exe和.pdb文件的方法[转] 使用Visual Studio编译工程时,默认设置下,即使选择了「Release」时也会生成扩展名为「.vshost ...

  6. 用shell脚本新建shell文件并自动生成头说明信息

    目标: 新建文件后,直接给文件写入下图信息 代码实现: [root@localhost test]# vi AutoHead.sh #!/bin/bash#此程序的功能是新建shell文件并自动生成头 ...

  7. 用shell脚本新建文件并自动生成头说明信息

    目标: 新建文件后,直接给文件写入下图信息 代码实现: [root@localhost test]# vi AutoHead.sh #!/bin/bash #此程序的功能是新建shell文件并自动生成 ...

  8. Visual Studio 2012 与此版本的 Windows 不兼容。有关详细信息,请联系 Microsoft

    参考网址:Visual Studio 2012 与此版本的 Windows 不兼容 解决 下载更新包安装:http://www.microsoft.com/zh-CN/download/details ...

  9. 让InstallShield 2015 Limited Edition for Visual Studio 2015生成的setup.exe双击时以管理员权限运行

    转载:http://blog.csdn.net/zztoll/article/details/52096700 如题,如何让InstallShield 2015 Limited Edition for ...

随机推荐

  1. Java 正则表达式详解---https://www.jb51.net/article/16829.htm

    一.正则表达式基础知识 我们先从简单的开始.假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”.如果搜索对大小写不敏感,单词“catalog”.“Catherine”.“so ...

  2. 2017 Multi-University Training Contest - Team 2

    Regular polygon Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  3. 82. Spring Boot – 启动彩蛋【从零开始学Spring Boot】

    我们在[28. SpringBoot启动时的Banner设置 ] 这一小节介绍过设置Spring Boot的Banner,但是实际当中,我们希望做的更漂亮,所以也就有了这小节Spring Boot-启 ...

  4. SQL注入与xss

    1. 什么是SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.通过递交参数构造巧妙的SQL语句,从而成功获取 ...

  5. 集群高可用之lvs+keepalive

    集群高可用之lvs+keepalive keepalive简介: 负载均衡架构依赖于知名的IPVS内核模块,keepalive由一组检查器根据服务器的健康情况动态维护和管理服务器池.keepalive ...

  6. [luoguP3960] 列队(动态开点线段树)

    传送门 有splay的做法,有树状数组的做法... 最好理解的还是线段树的做法. 一开始我是这样想的,如果移动某一个人,只有当前行和最后一列会受到影响,感觉就像是个线段树,树状数组什么的. 然而接下来 ...

  7. SPOJ 375 Query on a tree【树链剖分】

    题目大意:给你一棵树,有两个操作1.修改一条边的值,2.询问从x到y路径上边的最大值 思路:如果树退化成一条链的话线段树就很明显了,然后这题就是套了个树连剖分,调了很久终于调出来第一个模板了 #inc ...

  8. 将SSM架构中原来关于springSecurity3.x版本的写法配迁移到SpringBoot2.0框架中出现的问题解决记

    迁移过程中关于这个安全框架的问题很麻烦,springBoot自带的stater中的版本是5.0,原来系统有通过实现"org.springframework.security.authenti ...

  9. Aspose.Words使用代码插入表格

    Aspose.Words是一款功能强大的word文档处理控件,在不需要安装word的条件下,可进行word的创建,修改,转换等操作. Aspose.Words可以简单使用该产品提供的DocumentB ...

  10. Codeforces Round #269 (Div. 2) D - MUH and Cube Walls kmp

    D - MUH and Cube Walls Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & % ...