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

时间:2012-11-28 14:57:19

标签: visual-studio

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

2 个答案:

答案 0 :(得分:10)

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

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

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

1)这两个解决方案项目如下:

Solution Items

2) version.h有一些#defines将在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。这可以通过右键单击资源视图中每个项目的.rc并选择 Resource Includes 来完成。

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

Compile-time directives

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

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

/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "../VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////
P?......真是一口气。但现在您应该能够从一个位置更改您的产品版本。

答案 1 :(得分:0)

好的,我已经解决了。

我还必须在项目的资源文件

的底部添加以下内容
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//

#include "VersionInfo.rc2"

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

现在一切都很好。感谢