我正在开发一个旧的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
?
由于
答案 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"