9

概要:バージョンの詳細をプリプロセッサマクロを介して個別に維持するように定義していversion.incます...マクロ値をリソースバージョン定義ブロックに含めるにはどうすればよいですか?

私のversion.incファイルはUTF-8(つまり、この場合は純粋なASCII)で保存されます。その完全な内容は次のとおりです(ここでのプレフィックスは、リソースコンパイラによって生成されAPS_たファイルではなく、アプリケーションの実際の名前に関連しています)。.aps

#define APS_MAJORNUMBER          4
#define APS_MINORNUMBER          5
#define APS_BUILDNUMBER          0
#define APS_MODIFICATIONNUMBER   0
#define APS_BUILDEXT              "wx"
#define APS_DATEYEAR          2012
#define APS_DATEMONTH           10
#define APS_DATEDAY              4

app.rcVisual Studio 2012 C ++は、Visual Studio 2010よりもリソーススクリプトファイル()についてより慎重になっているようです。私が最初に気付いたのは、手動で編集する場合、UTF-16エンコーディングを維持する必要があるということです。確認できますか?それに関するドキュメントはありますか?

app.rc次のような外観のバージョンブロックを言います。

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040504b0"
        BEGIN
            VALUE "CompanyName", "TODO: <Company name>"
            VALUE "FileDescription", "TODO: <File description>"
            VALUE "FileVersion", "1.0.0.1"
            VALUE "InternalName", "app.exe"
            VALUE "LegalCopyright", "Copyright (C) 2012"
            VALUE "OriginalFilename", "app.exe"
            VALUE "ProductName", "TODO: <Product name>"
            VALUE "ProductVersion", "1.0.0.1"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x405, 1200
    END
END

Visual Studioの以前のバージョン(2005および2010)では、次のversion.rc2ような関連性を持つことができました。

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

#include "version.inc"

#define STR(value) #value
#define STRINGIZE(value) STR(value)
#define APS_FULLVERSION_STR \
  STRINGIZE(APS_MAJORNUMBER) "." \
  STRINGIZE(APS_MINORNUMBER) "." \
  STRINGIZE(APS_BUILDNUMBER) "." \
  STRINGIZE(APS_MODIFICATIONNUMBER)


VS_VERSION_INFO VERSIONINFO
 FILEVERSION APS_MAJORNUMBER,APS_MINORNUMBER,APS_BUILDNUMBER,APS_MODIFICATIONNUMBER
 PRODUCTVERSION APS_MAJORNUMBER,APS_MINORNUMBER,APS_BUILDNUMBER,APS_MODIFICATIONNUMBER
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x29L
#else
 FILEFLAGS 0x28L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "000004b0"
        BEGIN
            VALUE "Comments", "A fairly useful tool named APS"
            VALUE "CompanyName", "The company name"
            VALUE "FileDescription", "app"
            VALUE "FileVersion", APS_FULLVERSION_STR
            VALUE "InternalName", "aps"
            VALUE "LegalCopyright", "Copyright © 1993-" STRINGIZE(APS_DATEYEAR)
            VALUE "OriginalFilename", "app.exe"
            VALUE "PrivateBuild", ""
            VALUE "ProductName", "APS of the version 4"
            VALUE "ProductVersion", APS_FULLVERSION_STR
            VALUE "SpecialBuild", APS_BUILDEXT
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0, 1200
    END
END

次に、を手動で編集version.rc2してビアに含めました。ただし、VisualStudio2012プロジェクトとリソースファイルを使用してプロセスを繰り返すことはできません。私には見えない間違いをしているのかもしれません。そのアプローチはVisualStudio2012でも機能する必要がありますか?app.rcapp.rc

時間と経験をありがとう、

Petr

4

1 に答える 1

12

Visual Studio 2012(C ++、IDE)を介してこれを行う方法は次のとおりです。まず、以前のバージョンのVisual Studioとは異なり、app.rcすべてのファイル(version.rc2バージョンセクションが含まれapp.rc値が個別に維持されている[に含まれている])はUTF-16に格納する必要があるようです。その後、VisualStudio2012でも同じアプローチを繰り返すことができました。version.incversion.rc2

ただし、app.rcファイルを手動で編集する必要はありません。IDEを使用して次の手順を使用できます。

  • プロジェクト()を開き、 [リソースビュー]タブAppに切り替えます。
  • Appプロジェクトを展開し、プロジェクトを展開してapp.rc、フォルダーを展開しVersionます。あなたはアイテムを見ることができVS_VERSION_INFOます。
  • アイテムにマークVS_VERSION_INFOを付け、キーボードのDeleteキーを押します。アイテムとその上位Versionフォルダーが消えます。
  • フォルダをマウスで右クリックし、 [含まれるリソース...app.rc ]を選択します。同じ名前で3つの入力ペインを持つダイアログが表示されます。

Resourdeインクルードダイアログ

  • コンパイル時ディレクティブという名前の下部ペインに焦点を合わせ、そこに書き込み#include "version.rc2"ます。.rc(ファイルに拡張子を付けることはできませんが.rc2、MSDNドキュメントの他の場所で問題なく推奨されています。)
  • [ OK ]を押して、すべてのファイルを保存します(変更したファイルも保存しますapp.rc)。

手順の結果、リソースツリーにVersionフォルダとアイテムが表示されなくなります([リソースビュー]タブを参照)。ただし、上記の構築されたセクション(内に格納されている)は、アプリケーションリソースにコンパイルされます。VS_VERSION_INFOVersionversion.rc2

技術的には、ファイルの次の部分はapp.rc、手順の後に見つけることができます。

3 TEXTINCLUDE 
BEGIN
    "#include ""version.rc2""\r\n"
    "\0"
END

..。

#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "version.rc2"

/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

トピックを強化するための建設的なコメントは歓迎され、+1されます:)

よいひとときを、

Petr

于 2012-10-12T08:09:39.090 に答える