我有一个包含大约 8 个独立项目的解决方案,每次我对整个解决方案进行发布构建时,我都需要确保每个项目的二进制输出的版本字符串是相同的。有没有一种简单的方法来同步项目资源文件的 VS_VERSION_INFO 部分?
问问题
1088 次
4 回答
7
我不知道这是您想要的方式,但.rc
文件允许包含,您可以使用#define
版本块中的值
在头文件中定义版本号
#define VER_MAJOR 8
#define VER_MINOR 00
#define VER_BUILD_HI 00
#define VER_BUILD_LO 021
#define VER_FLAGS VS_FF_PRERELEASE
// The Binary form of the version numbers
#define VER_FILE VER_MAJOR, VER_MINOR, VER_BUILD_HI, VER_BUILD_LO
#define VER_PRODUCT VER_MAJOR, VER_MINOR, 0, 0
#define VER_STR(arg) #arg
// The String form of the version numbers
#define VER_FILE_STRING VALUE "FileVersion", "8.0\0"
#define VER_PRODUCT_STRING VALUE "ProductVersion", "8.0\0"
在VS_VERSION_INFO
块中使用它们
#include "bversion.h" //#define values in here
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILE
PRODUCTVERSION VER_PRODUCT
FILEFLAGSMASK 0x2fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "XXX\0"
VALUE "FileDescription", "YYY\0"
VER_FILE_STRING
VALUE "InternalName", "ZZZ\0"
VALUE "LegalCopyright", "© 2009 PDQ.\0"
VALUE "LegalTrademarks", "AAA\0"
VALUE "OriginalFilename", "BBB.EXE\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "CCC\0"
VER_PRODUCT_STRING
VALUE "SpecialBuild", "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
在所有项目中引用一个头文件并在每次构建之前更改它。
于 2009-05-21T18:43:52.977 回答
1
我们使用 FinalBuilder 进行构建,让它通过文件(作为文本文件)并使用正确的版本信息更新它们。
于 2009-05-21T18:24:21.957 回答
1
实现这一点的最简单方法是使用预构建步骤,该步骤为所有资源文件调用某种类型的脚本(sed/awk、PowerShell 等),并在适当的位置放入正确的值。如果您使用 SVN,那么来自 TortoiseSVN 发行版的 SubWCRev 也可以用于此部分,并且可以自动使用您的存储库中的修订号作为版本字符串。
于 2009-05-21T18:29:35.703 回答
0
您可以使用ResourceLib编写一些代码来执行此操作,或者采用为您执行此操作的构建过程。
于 2009-09-12T03:38:15.100 回答