9

我有 2 个 Visual C++ 项目,它们都有一个定义了现场产品版本的 RC 文件。我怎样才能让这两个项目从全球获得这个版本?全球 RC 文件或有什么解决方案?

4

2 回答 2

11

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

每个项目的单独资源文件使用 aTEXTINCLUDE来引入解决方案的 .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"

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。这是通过在资源视图中右键单击每个项目的 .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"
/////////////////////////////////////////////////////////////////////////////

呼……那是一口。但是现在您应该能够从一处更改您的产品版本。

于 2012-11-28T15:22:59.137 回答
0

好的,我已经解决了。

我还必须在项目资源文件的底部添加以下内容

/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//

#include "VersionInfo.rc2"

/////////////////////////////////////////////////////////////////////////////

现在一切都很好。谢谢

于 2012-11-29T14:22:50.550 回答