在TeamCity中更新Visual Studio C ++项目EXE后期版本的版本

时间:2018-01-05 18:13:58

标签: visual-studio-2015 teamcity

我正在开发一个旧的Visual Studio(2015)C ++项目。无法自动更新产品版本。当前版本已修复为4.6.0。该项目还托管在TeamCity服务器上,用于构建版本。 该项目的resource file(.rc file)Service.rc,如下所示:

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

    /////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MSPSERVER           ICON                    "service.ico"

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 4,6,0,0
 PRODUCTVERSION 4,6,0,0
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", "Home"
            VALUE "FileDescription", "Service App"
            VALUE "FileVersion", "4.6.0"
            VALUE "InternalName", "Service"
            VALUE "LegalCopyright", "Copyright © 2018"
            VALUE "OriginalFilename", "MyService.exe"
            VALUE "ProductName", "Home Service"
            VALUE "ProductVersion", "4.6.0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

#endif    // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

有没有办法可以设置TeamCity版本,以便每次在构建后更新版本?就像我的版本是4.6.0.200一样,有关此可执行文件的版本信息也会从4.6.0.0更新为4.6.0.200

由于

1 个答案:

答案 0 :(得分:0)

C风格的预处理程序正在处理编译资源文件(.rc)之前的内容。因此,该想法是生成一个版本信息头文件,并将其包含在代码中,而不是在各处硬编码版本号:

#ifndef VERSION_INFO_H_
#define VERSION_INFO_H_

#define APP_VERSION_MAJOR 4
#define APP_VERSION_MAJOR_SZ "4"
#define APP_VERSION_MINOR 6
#define APP_VERSION_MINOR_SZ "6"
…

#endif // ifndef VERSION_INFO_H_

在资源文件中:

#include "Version Info.h"

FILEVERSION APP_VERSION_MAJOR,APP_VERSION_MINOR,0,0
…
VALUE "ProductVersion", APP_VERSION_MAJOR_SZ "." APP_VERSION_MINOR_SZ ".0"