您的位置:首页 > 其它

利用subwcrev.exe工具自动生成VS开发工具中的版本号

2015-08-05 10:48 429 查看
关于subwcrev.exe参见:

http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev.html

http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev-keywords.html

基本格式是:

SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]

所以需要在VS对应的工程中新建两个文件,一个是SrcVersionFile和DstVersionFile,其中:

1.WorkingCopyPath工程所在的目录

2.SrcVersionFile含有SubWCRev.exe程序可以替换的宏;

3.DstVersionFile为更新svn之后把宏替换掉以后的目标文件。

例如:

SrcVersionFile为一个头文件,名字叫Template.Source.Version.h,其内容如下:

[code]#pragma once

#define VER_UMS_HQ_MAJOR    2
#define VER_UMS_HQ_MINOR    2
#define VER_UMS_HQ_SVN  $WCREV$

#define VER_UMS_HQ_REVISION "2.2.$WCREV$.0"


DstVersionFile文件为另外一个头文件,名字叫Source.Version.h,其内容如下:

[code]#pragma once

#define VER_UMS_HQ_MAJOR    2
#define VER_UMS_HQ_MINOR    2
#define VER_UMS_HQ_SVN  8465

#define VER_UMS_HQ_REVISION "2.2.8465.0"


然后在工程属性设置:

Build Event选项->Pre-Build Event的Command Line中输入:

subwcrev.exe “./” “./Template.Source.Version.h” “./Source.Version.h”

这样每次用svn更新代码时,svn的项目版本号也更新下来了,并最重替换掉 Template.Source.Version.h中宏WCREVWCREV,生成Source.Version.h中的内容。最后在其它文件中就可以使用这个VER_UMS_HQ_REVISION的定义了,例如在程序版本号中使用:

[code]VS_VERSION_INFO VERSIONINFO
 FILEVERSION VER_UMS_HQ_MAJOR,VER_UMS_HQ_MINOR,VER_UMS_HQ_SVN,0
 PRODUCTVERSION VER_UMS_HQ_MAJOR,VER_UMS_HQ_MINOR,VER_UMS_HQ_SVN,0
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "CompanyName", "Zealink.Com"
            VALUE "FileDescription", "Zealink.UMSHQ"
            VALUE "FileVersion", VER_UMS_HQ_REVISION
            VALUE "InternalName", "Zealink.UMS.HQ.dll"
            VALUE "LegalCopyright", "Zealink.Com  All rights reserved."
            VALUE "OriginalFilename", "Zealink.UMS.HQ.dll"
            VALUE "ProductName", "UMS"
            VALUE "ProductVersion", VER_UMS_HQ_REVISION
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: