VC编译时版本号自动生成

原创 2007年10月10日 10:19:00

 1.新建一个宏,内容如下:

'------------------------------------------------------------------------------
'FILE DESCRIPTION: version
'------------------------------------------------------------------------------
Function GetProjectDir(FullName)

'VC++ doesn't provide any method for getting the path of the active project
'See the VB Script reference for more information on the VB Script functions
'used in this function

Dim proj_path
proj_path = Split(StrReverse(FullName),"/",-1,1)

Dim count
count = UBound(proj_path)

Dim full_path
full_path = ""
Dim i

for i = 1 to count
 full_path = full_path & "/" & proj_path(i)
next

GetProjectDir = StrReverse(full_path)

End Function


Sub ReplaceText(selection, count, incrementby)

'selection represents the TextSelection object
'count represents the position of the version number to be incremented
'incrementby represents a number that will be added to the existing version number

selection.WordRight dsMove, count
selection.WordRight dsExtend, 1
Dim str
str = selection.Text
str = str + incrementby

selection.Text = str

End Sub


Sub Application_BuildFinish(numError, numWarning)

'This event will be triggered after every build of a project
'You can check numError and/or numWarning to determine if you want to continue
'If numError <> 0 Then
    'exit sub
'Obtain the full path of the active project
Dim full_path
full_path = GetProjectDir(ActiveProject.FullName)

full_path = full_path & "versionno.h"

'Open the VersionNo.h file
Documents.Open full_path

'Obtain the TextSelection object
Dim selection
set selection = ActiveDocument.Selection
selection.StartOfDocument

'Increment the version information
ReplaceText selection, 9, 1
selection.LineDown
selection.StartOfLine
ReplaceText selection, 9, 1
selection.LineDown
selection.StartOfLine
ReplaceText selection, 10, 1
selection.LineDown
selection.StartOfLine
ReplaceText selection, 10, 1

ActiveDocument.Save
ActiveDocument.Close
 
End Sub
2.保存后,在VC IDE界面的TOOLS菜单下点击customize,进入customize对话框,在add-ins and Macro Files页面下选择浏览按钮,找到上面保存的宏文件,确认是选中状态后,关闭customize对话框

3.下面就是修改你所要让版本号自动修改的工程了,修改工程中*.rc文件,把文件中的

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "Comments", "Sample Application/0"
            VALUE "CompanyName", "Microsoft Corp./0"
            VALUE "FileDescription", "MyProject MFC Application/0"
            VALUE "FileVersion", "1, 0, 0, 1/0"
            VALUE "InternalName", "MyProject/0"
            VALUE "LegalCopyright", "Copyright (C) 1999/0"
            VALUE "OriginalFilename", "MyProject.EXE/0"
            VALUE "ProductName", "MyProject Application/0"
            VALUE "ProductVersion", "1, 0, 0, 1/0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

剪切到*.rc2文件的// Add manually edited resources here...下,并进行修改如下:

#include "VersionNo.h"
VS_VERSION_INFO VERSIONINFO
 FILEVERSION FILEVER
 PRODUCTVERSION PRODUCTVER
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "080404b0"
        BEGIN
            VALUE "Comments", "/0"
            VALUE "CompanyName", "/0"
            VALUE "FileDescription", "22 Microsoft 基础类应用程序/0"
            VALUE "FileVersion", STRFILEVER
            VALUE "InternalName", "22/0"
            VALUE "LegalCopyright", "版权所有 (C) 2007/0"
            VALUE "LegalTrademarks", "/0"
            VALUE "OriginalFilename", "22.EXE/0"
            VALUE "PrivateBuild", "/0"
            VALUE "ProductName", "22 应用程序/0"
            VALUE "ProductVersion", STRPRODUCTVER
            VALUE "SpecialBuild", "/0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x804, 1200
    END
END

4.在当前工程中增加头文件VersionNo.h内容如下:

#define FILEVER        1,0,0,14
#define PRODUCTVER     1,0,0,14
#define STRFILEVER     "1,0,0,14/0"
#define STRPRODUCTVER  "1,0,0,14/0"

注意:VersionNo.h的最后一行一定要加回车

在VS2013以及Linux系统中利用SVN自动更新版本号

参考网址:http://blog.csdn.net/xuly_29/article/details/50623103 在VS2013中利用SVN自动更新版本号 $WCREV$ : 获...
  • listener51
  • listener51
  • 2016-11-17 14:02:33
  • 1093

VC之版本号-编译自动增加版本号

[VC插件]编译后的版本自动更新 一个偶然的机会,在MSDN看到一种用脚本自动增加版本号的方法: How To Increment Version Information Af...
  • lqhed
  • lqhed
  • 2016-12-07 11:25:36
  • 952

VS之版本-获取编译时间-用于自动生成版本号

我们写软件的,总希望程序有变动时可以自动生成版本号,不用手动去改,这样多方便啊。VS编译器就可实现这个功能。如下所示: [cpp] vie...
  • lqhed
  • lqhed
  • 2016-12-07 11:32:04
  • 1389

mfc获取自身版本号

1、引入lib #pragma comment(lib, "Version.lib ") 2、增加如下代码  char cPath[200],szVersionBuffer[200]...
  • ccfxue
  • ccfxue
  • 2016-04-18 15:35:43
  • 1129

每次vc编译时自动增加版本号

  • 2010年05月11日 12:49
  • 43KB
  • 下载

vc 版本号自动增加

  • 2017年12月19日 12:05
  • 854KB
  • 下载

VC自动生成软件版本号

VC自动生成软件版本号   flyfish 目的: 软件的版本有主版本号.子版本号.修正版本号.编译版本号 其中编译版本号与SVN服务器的版本号(Revision)自动同步。     ...
  • flyfish1986
  • flyfish1986
  • 2015-01-07 15:29:42
  • 7024

给VC程序添加版本号与编译时间

一般来说,发布的正式软件都会包含程序的svn版本号以及软件的编译版本和编译时间等信息,但是这些东西并不是默认就存在的,需要我们进行一些步骤的处理。具体做法有几种,万变不离其宗的是,利用SVN自带的指令...
  • cuglifangzheng
  • cuglifangzheng
  • 2016-02-23 14:59:13
  • 1508

每次新版本build时,让软件的版本号自增

VC2005利用SVN的版本号,生成DLL和EXE文件的版本号 TortoiseSVN下有一个SubWCRev程序,可以获取任意个路径对应的SVN版本库的版本号。并替换到文件对应位置。 VC200...
  • bsc8011
  • bsc8011
  • 2011-12-28 18:03:00
  • 4523

用VC++实现版本在线升级

现在很多共享软件都有"在线升级"功能,比如"Windows 优化大师","超级兔子",所谓在线升级就是一个版本检测程序,通过他,用户可以随时检查有没有新版本程序,以便及时升级,下面我们就在自己的程序里...
  • ice197983
  • ice197983
  • 2007-03-21 17:13:00
  • 1833
收藏助手
不良信息举报
您举报文章:VC编译时版本号自动生成
举报原因:
原因补充:

(最多只允许输入30个字)