後は、ビルドのたびに Visual C のバージョン情報を増加する方法

文書翻訳 文書翻訳
文書番号: 237870
すべて展開する | すべて折りたたむ

概要

Visual C は、各ビルド後はプロジェクトのバージョン リソース情報を自動的にインクリメントする機能はありません。このような機能を提供する 1 つの方法について説明します。

詳細

ここで説明されている手順を使用するのではなく、リソース コンパイラ (.rc) ファイルを変更するのには、プログラムを記述できます。ただし、RC ファイルを Visual C の管理下です。RC ファイルの保存、中に visual C を変更して、バージョン リソースに影響する可能性があります。このセクションで説明する方法、Visual C プロジェクトに適用できます。次の使用例は、Mfc プロジェクトを使用します。

MFC (exe 実行形式) の Appwizard を使用して新しいプロジェクトを作成して、 ' Myproject '].MyProject は、MyProject.rc ファイルは、MyProject.rc2 が含まれている必要があります。.Rc2 ファイルは、ユーザー定義のリソースを提供されています。各ビルドの後の MyProject のバージョン情報をインクリメントするのには、次の手順を実行します。
  1. .Rc ファイルのバージョン リソースを削除し、.rc2 ファイルを。

    1. (Res フォルダー内にある)、MyProject.rc2 と MyProject.rc の両方は、テキスト エディターでを開きます。Visual C エディターを使用して. します。 ファイルを開く で、 ファイル メニューを選択し テキスト で、 としてファイルを開く MyProject.rc ファイルの一覧です。
    2. バージョン リソースのステートメントに MyProject.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 0x4L
       FILETYPE 0x1L
       FILESUBTYPE 0x0L
      BEGIN
          BLOCK "StringFileInfo"
          BEGIN
              BLOCK "040904b0"
              BEGIN
                  VALUE "Comments", "Sample Application\0"
                  VALUE "CompanyName", "Microsoft Corp.\0"
                  VALUE "FileDescription", "MyProject MFC Application\0"
                  VALUE "FileVersion", "1, 0, 0, 1\0"
                  VALUE "InternalName", "MyProject\0"
                  VALUE "LegalCopyright", "Copyright (C) 1999\0"
                  VALUE "OriginalFilename", "MyProject.EXE\0"
                  VALUE "ProductName", "MyProject Application\0"
                  VALUE "ProductVersion", "1, 0, 0, 1\0"
              END
          END
          BLOCK "VarFileInfo"
          BEGIN
              VALUE "Translation", 0x409, 1200
          END
      END
      							
    3. バージョン リソースからの MyProject.rc ファイルをカットし、MyProject.rc2 ファイルのコメントの下に「追加手動でリソースをここで編集します」ペースト各フィールドは、リソースのいずれかを意味する方法の詳細については、「VERSIONINFO リソース ステートメントのヘルプを参照してください。
  2. FILEVER、PRODUCTVER マクロをファイルバージョンと PRODUCTVERSION データを置き換えます。同様に、STRFILEVER と STRPRODUCTVER は、マクロをファイルバージョンと ProductVersion 文字列データを置き換えます。
  3. #Include を追加します。 VersionNo.h すぐに、VS_VERSION_INFO リソース ステートメントの前にします。バージョン リソースに表示されるようになりました。
    /////////////////////////////////////////////////////////////////////// 
    // 
    // Version
    // 
    #include "VersionNo.h"
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION FILEVER
     PRODUCTVERSION PRODUCTVER
     FILEFLAGSMASK 0x3fL
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x4L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040904b0"
            BEGIN
                VALUE "Comments", "Sample Application\0"
                VALUE "CompanyName", "Microsoft Corp.\0"
                VALUE "FileDescription", "MyProject MFC Application\0"
                VALUE "FileVersion", STRFILEVER
                VALUE "InternalName", "MyProject\0"
                VALUE "LegalCopyright", "Copyright (C) 1997\0"
                VALUE "OriginalFilename", "MyProject.EXE\0"
                VALUE "ProductName", "MyProject Application\0"
                VALUE "ProductVersion", STRPRODUCTVER
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x409, 1200
        END
    END
    					
  4. プロジェクトと同じディレクトリに VersionNo.h という名前のヘッダー ファイルを作成します。このファイルは、手順 2 で使用するマクロの定義は、次のステートメントが含まれます。
    #define FILEVER        1,0,0,1
    #define PRODUCTVER     1,0,0,1
    #define STRFILEVER     "1, 0, 0, 1\0"
    #define STRPRODUCTVER  "1, 0, 0, 1\0"
    						
    注: 最後の行にライン フィード文字およびキャリッジ リターン文字を追加します。

    ここで、MyProject.rc ファイル MyProject.rc2、含み MyProject.rc2 ファイルには VersionNo.h が含まれています。
  5. Visual Basic スクリプト マクロを使用して、VersionNo.h ファイルの内容が変更されます。ビルドが完了するまでは発生しませんのでマクロ Visual の C++ の BuildFinish イベント、ハンドルの下を説明しました。この VB のスクリプト コードが呼び出されるたびに、まず固定量により、ヘッダー ファイル内のバージョン番号をインクリメントし、ファイルを保存し、閉じます。2 回目以降のビルドでは、新しいバージョン番号は、実行可能ファイルに含まれています。

    インストールし、VB スクリプト コードを使用するには、次の操作を行います。

    1. DSM (マクロ) は、既存のファイルを開くまたは Visual C の新しい DSM ファイルを作成します。クリックして新しいファイルを作成するには、 新しい で、 ファイル メニューの選択 マクロ ファイル で、 ファイル タブや名前をクリックしてください [OK].
    2. 次の次の VB のスクリプト コードを貼り付けます (Visual C では、空の DSM ファイルをインストールできませんをインストールする、次の手順の説明です)。
      Function GetProjectDir(FullName)
      
      'VC++ doesn't provide any method for getting the path of the active project
      'See the VB Script reference for more information on the VB Script functions 
      'used in this function
      
      Dim proj_path
      proj_path = Split(StrReverse(FullName),"\",-1,1)
      
      Dim count
      count = UBound(proj_path)
      
      Dim full_path
      full_path = ""
      Dim i
      
      for i = 1 to count 
      	full_path = full_path & "\" & proj_path(i)
      next
      
      GetProjectDir = StrReverse(full_path)
      
      End Function
      
      
      Sub ReplaceText(selection, count, incrementby)
      
      'selection represents the TextSelection object
      'count represents the position of the version number to be incremented
      'incrementby represents a number that will be added to the existing version number
      
      selection.WordRight dsMove, count
      selection.WordRight dsExtend, 1
      Dim str
      str = selection.Text
      str = str + incrementby
      
      selection.Text = str
      
      End Sub
      
      
      Sub Application_BuildFinish(numError, numWarning)
      
      'This event will be triggered after every build of a project
      'You can check numError and/or numWarning to determine if you want to continue
      'If numError <> 0 Then
          'exit sub
      'Obtain the full path of the active project
      Dim full_path
      full_path = GetProjectDir(ActiveProject.FullName)
      
      full_path = full_path & "versionno.h"
      
      'Open the VersionNo.h file
      Documents.Open full_path
      
      'Obtain the TextSelection object
      Dim selection
      set selection = ActiveDocument.Selection
      selection.StartOfDocument 
      
      'Increment the version information
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      
      ActiveDocument.Save
      ActiveDocument.Close
       
      End Sub
      								
      注: このコードは、サポートされていないサンプルです。ビルド シナリオを修正する可能性があります。
    3. インストールされていない場合、DSM ファイルをインストールします。クリックしてインストールするのには カスタマイズ で、 ツール メニューをクリックして、 アドインおよびマクロ ファイル DSM ファイルを選択をクリックして [参照] タブ 閉じる.
  6. 選択 MyProject.exe をビルドします。 から、 ビルド メニューです。ビルドの終了後、VersionNo.h ファイルを開きます。それは、次のステートメントが含まれます。
    #define FILEVER        1,0,0,2
    #define PRODUCTVER     1,0,0,2
    #define STRFILEVER     "1, 0, 0, 2\0"
    #define STRPRODUCTVER  "1, 0, 0, 2\0"
    						
    コードをビルドする場合は、このバージョン情報は、実行可能ファイルには、含まれてされ、バージョン情報がインクリメントされます。いくつかのコードにビルド エラーが発生する場合は、バージョン番号をインクリメントできないように上記マクロを導入できます。

関連情報

Visual C のオブジェクト モデルの詳細については、MSDN ライブラリで次のトピックを参照してください。
.aspx の http://msdn.microsoft.com/en-us/library/aa712880 (VS.71)

VB スクリプト マクロの詳細については、MSDN ライブラリで次のトピックを参照してください。
.aspx の http://msdn.microsoft.com/en-us/library/aa247202 (VS.60)

VB スクリプト言語の詳細については、MSDN ライブラリで次のトピックを参照してください。
.aspx の http://msdn.microsoft.com/en-us/library/d1wf56tt (vs.71)

Visual の C++ の VERSIONINFO リソースのステートメントの詳細については、MSDN ライブラリで次のトピックを参照してください。
http://msdn.microsoft.com/en-us/library/aa381043.aspx

プロパティ

文書番号: 237870 - 最終更新日: 2011年7月22日 - リビジョン: 5.0
キーワード:?
kbhowto kbscript kbvcobj kbide kbautomation kbdevstudio kbmt KB237870 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:237870
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com