我有 2 个 Visual C++ 项目,它们都有一个定义了现场产品版本的 RC 文件。我怎样才能让这两个项目从全球获得这个版本?全球 RC 文件或有什么解决方案?
2 回答
对我有用的是添加两个“解决方案项目”。一个是包含#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"
/////////////////////////////////////////////////////////////////////////////
呼……那是一口。但是现在您应该能够从一处更改您的产品版本。
好的,我已经解决了。
我还必须在项目资源文件的底部添加以下内容
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////
现在一切都很好。谢谢