如何在两个Visual C++项目之间共享相同的产品版本?

dbr*_*sco 7 visual-studio

我有2个Visual C++项目,它们都有一个RC文件,其中定义了Field Product Version.如何使这两个项目从全球范围内获得此版本?全局RC文件或有哪些解决方案?

Sea*_*ine 10

对我来说很有效的是添加两个"解决方案项目".一个是.h文件,#defines一些版本字符串,另一个是.rc文件,其中包含.h并BLOCK "StringFileInfo"使用了定义.

每个项目的各个资源文件使用a TEXTINCLUDE来引入解决方案.rc的内容.

这是很多东西.让我告诉你我的意思......

1)添加两个解决方案项:

解决方案项目

2) version.h有一些将在VersionInfo.rc2中使用的#defines

#define SOLUTIONFILEVERSION 1,00,0000,00000
#define SOLUTIONFILEVERSIONSTRING "1,00,0000,00000"
#define COPYRIGHT "Copyright 2012"
#define PRODUCTNAME "Your product name"
#define COMPANYNAME "Your company name"
Run Code Online (Sandbox Code Playgroud)

3) VersionInfo.rc2使用定义

#include "version.h"
VS_VERSION_INFO VERSIONINFO
 FILEVERSION SOLUTIONFILEVERSION
 PRODUCTVERSION SOLUTIONFILEVERSION
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", COMPANYNAME
            VALUE "FileVersion", SOLUTIONFILEVERSIONSTRING
            VALUE "LegalCopyright", COPYRIGHT
            VALUE "ProductName", PRODUCTNAME
            VALUE "ProductVersion", SOLUTIONFILEVERSIONSTRING
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
Run Code Online (Sandbox Code Playgroud)

您将需要在此文件末尾添加一个新行,以便在下一步中包含资源编译器时使其满意.

您可能想要设置的另一个字段是"FileDescription",但通常基于每个项目.请记住,这可以包含您希望在项目之间共享的任何内容.

4)在每个进程中包含VersionInfo.rc2.这可以通过在资源视图中右键单击每个项目的.rc 并选择Resource Includes来完成.

添加到编译时指令:#include "../VersionInfo.rc2"

编译时指令

这可以通过将以下内容添加到项目的.rc文件中手动完成,但最好让Visual Studio为您管理所有内容.

3 TEXTINCLUDE 
BEGIN
    "#include ""../VersionInfo.rc2""\r\n"
    "\0"
END

/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "../VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////
Run Code Online (Sandbox Code Playgroud)

P ......那是一口气.但现在您应该可以从一个位置更改您的产品版本.