我有2个Visual C++项目,两个项目都有一个RC文件,其中定义了“现场产品版本”。我该如何做两个项目才能从全局各地获得此版本?全局RC文件或有什么解决方案?

最佳答案

对我来说,行之有效的是添加两个“解决方案项”。一个是.h文件,它使用#defines一些版本字符串,而另一个是.rc文件,该文件包含使用定义的.h和BLOCK "StringFileInfo"的包含内容。

每个项目的单独资源文件都使用 TEXTINCLUDE 引入解决方案.rc的内容。

要接受很多东西。让我告诉你我的意思是...

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

2) version.h具有一些#define,将在VersionInfo.rc2中使用

#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"

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

您将希望在此文件的末尾添加新行,以使资源编译器在下一步中包含时变得满意。

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

4)在每个进程中包括VersionInfo.rc2。通过在资源 View 中右键单击每个项目的.rc并选择“资源包含”来完成此操作。

添加到编译时指令:#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"
/////////////////////////////////////////////////////////////////////////////

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

关于visual-studio - 如何在两个Visual C++项目之间共享相同的产品版本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13607986/

10-13 09:03