4

約 8 つの個別のプロジェクトを含むソリューションがあり、ソリューション全体のリリース ビルドを行うたびに、各プロジェクトのバイナリ出力のバージョン文字列が同じであることを確認する必要があります。プロジェクトのリソース ファイルの VS_VERSION_INFO セクションを同期する簡単な方法はありますか?

4

4 に答える 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

すべてのプロジェクトで 1 つのヘッダー ファイルを参照し、各ビルドの前に変更します。

于 2009-05-21T18:43:52.977 に答える
1

これを実装する最も簡単な方法は、すべてのリソースファイルに対して何らかのスクリプト(sed / awk、PowerShellなど)を呼び出し、適切な場所に正しい値をドロップするビルド前の手順を使用することです。SVNを使用する場合は、TortoiseSVNディストリビューションのSubWCRevをこの部分にも使用でき、リポジトリのリビジョン番号をバージョン文字列として自動的に使用できます。

于 2009-05-21T18:29:35.703 に答える
1

ビルドには FinalBuilder を使用し、ファイルを (テキスト ファイルとして) 処理し、正しいバージョン情報で更新します。

于 2009-05-21T18:24:21.957 に答える
0

これを行うには、 ResourceLibを使用してコードを少し書くか、それを行うビルド プロセスを採用することができます。

于 2009-09-12T03:38:15.100 に答える