我有两个Visual C++项目,它们都有一个RC文件,其中定义了“产品版本”字段。我该如何使这两个项目从全局位置获取此版本?全局RC文件或其他解决方案有哪些?
我有两个Visual C++项目,它们都有一个RC文件,其中定义了“产品版本”字段。我该如何使这两个项目从全局位置获取此版本?全局RC文件或其他解决方案有哪些?
对我来说有效的方法是添加两个“解决方案项”。一个是.h文件,其中定义了一些版本字符串,另一个是.rc文件,其中包含对.h的引用和使用这些定义的BLOCK“StringFileInfo”
。
每个项目的单独资源文件使用{{link1: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。这可以通过右键单击资源视图中每个项目的.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"
/////////////////////////////////////////////////////////////////////////////
哇...这真是一大堆话。但现在你应该能够从一个地方更改你的产品版本。
.sln
应该不会出现任何问题。 - Sean Cline好的,我已经解决了。
我还必须在项目资源文件底部添加以下内容。
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////
现在一切都很顺利。谢谢。
version.h
文件,并从两个 rc 文件中包含它。 - user1773602version.h
中。然后使用此方法https://dev59.com/3UXRa4cB1Zd3GeqPpzQi将`version.h`包含在rc文件中。 - user1773602