在Visual Studio C ++(Win32)项目中同步版本资源

时间:2009-05-21 18:20:37

标签: visual-studio version

我有一个大约有8个单独项目的解决方案,每次我做整个解决方案的发布版本时,我需要确保每个项目的二进制输出的版本字符串是相同的。有没有一种简单的方法来同步项目资源文件的VS_VERSION_INFO部分?

4 个答案:

答案 0 :(得分: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

引用所有项目中的一个头文件,并在每次构建之前更改它。

答案 1 :(得分:1)

我们使用FinalBuilder进行构建,让它浏览文件(作为文本文件)并使用正确的版本信息更新它们。

答案 2 :(得分:1)

实现这一目标的最简单方法是使用预建步骤,为所有资源文件调用某种类型的脚本(sed / awk,PowerShell等),并在适当的位置删除正确的值。如果你使用SVN,那么来自TortoiseSVN发行版的SubWCRev也可以用于此作品,并且可以自动使用你的存储库中的版本号作为版本字符串。

答案 3 :(得分:0)

您可以使用ResourceLib编写一些代码来执行此操作或使用a build process that does it for you