方法 : ビルド イベントを指定する (C#)How to: Specify build events (C#)

ビルド開始前またはビルド終了後に実行するコマンドを指定するには、ビルド イベントを使います。Use build events to specify commands that run before the build starts or after the build finishes. ビルド イベントは、ビルド プロセスにおいてビルドがこれらのポイントに正常に達した場合にのみ実行されます。Build events are executed only if the build successfully reaches those points in the build process.

プロジェクトのビルド時に、ビルド前イベントは PreBuildEvent.bat というファイルに追加され、ビルド後イベントは PostBuildEvent.bat というファイルに追加されます。When a project is built, pre-build events are added to a file that is named PreBuildEvent.bat and post-build events are added to a file that is named PostBuildEvent.bat. エラー チェックを行う場合は、独自のエラー チェック コマンドをビルド ステップに追加します。If you want to ensure error checking, add your own error-checking commands to the build steps.

注意

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。The Visual Studio edition that you have and the settings that you use determine these elements. 詳細については、「IDE をカスタマイズする」をご覧ください。For more information, see Personalizing the IDE.

ビルド前のイベントとビルド後のイベントを指定する方法How to specify pre-build and post-build events

ビルド イベントを指定するにはTo specify a build event

  1. ソリューション エクスプローラーで、ビルド イベントを指定するプロジェクトを選択します。In Solution Explorer, select the project for which you want to specify the build event.

  2. [プロジェクト] メニューの [プロパティ] をクリックします。On the Project menu, click Properties.

  3. [ビルド イベント] タブを選択します。Select the Build Events tab.

  4. [ビルド前に実行するコマンド ライン] ボックスで、ビルド イベントの構文を指定します。In the Pre-build event command line box, specify the syntax of the build event.

    注意

    プロジェクトが最新の状態で、ビルドがトリガーされない場合、ビルド前イベントは実行されません。Pre-build events do not run if the project is up to date and no build is triggered.

  5. [ビルド後に実行するコマンド ライン] ボックスで、ビルド イベントの構文を指定します。In the Post-build event command line box, specify the syntax of the build event.

    注意

    .bat ファイルを実行するすべてのビルド後コマンドの前に call ステートメントを追加します。Add a call statement before all post-build commands that run .bat files. たとえば、call C:\MyFile.bat または call C:\MyFile.bat call C:\MyFile2.bat のようにします。For example, call C:\MyFile.bat or call C:\MyFile.bat call C:\MyFile2.bat.

  6. [ビルド後イベントの実行] ボックスで、ビルド後イベントを実行する条件を指定します。In the Run the post-build event box, specify under what conditions to run the post-build event.

    注意

    長い構文を追加する場合、または [ビルド前に実行するコマンド ライン]/[ビルド後に実行するコマンド ライン] ダイアログ ボックスでビルド マクロを選択する場合は、省略記号 [...] ボタンをクリックして編集ボックスを表示します。To add lengthy syntax, or to select any build macros from the Pre-build event/post-build event command line dialog box, click the ellipsis button (...) to display an edit box.

    ビルド イベントの構文では、コマンド プロンプトまたは .bat ファイルで有効な任意のコマンドを使うことができます。The build event syntax can include any command that is valid at a command prompt or in a .bat file. 後続のすべてのコマンドが確実に実行されるように、バッチ ファイルの名前の前には call を記述する必要があります。The name of a batch file should be preceded by call to ensure that all subsequent commands are executed.

    注意

    ビルド前またはビルド後イベントが正常に完了しない場合は、アクションの成功を示すゼロ (0) 以外のコードでイベント アクションを終了させて、ビルドを強制終了することができます。If your pre-build or post-build event does not complete successfully, you can terminate the build by having your event action exit with a code other than zero (0), which indicates a successful action.

例: ビルド後イベントを使ってマニフェスト情報を変更する方法Example: How to change manifest information by using a post-build event

次の手順は、ビルド後イベントから呼び出される .exe コマンドを使って、アプリケーション マニフェスト (プロジェクト ディレクトリ内の .exe.manifest ファイル) 内にオペレーティング システムの最小バージョンを設定する方法を示しています。The following procedure shows how to set the minimum operating system version in the application manifest by using an .exe command that is called from a post-build event (the .exe.manifest file in the project directory). オペレーティング システムの最小バージョンは、4.10.0.0 などの 4 つの部分に分かれた数字です。The minimum operating system version is a four-part number such as 4.10.0.0. これを行うには、次のように、コマンドでマニフェストの <dependentOS> セクションを変更します。To do this, the command will change the <dependentOS> section of the manifest:

<dependentOS>
   <osVersionInfo>
      <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
   </osVersionInfo>
</dependentOS>

アプリケーション マニフェストを変更する .exe コマンドを作成するにはTo create an .exe command to change the application manifest

  1. コマンド用のコンソール アプリケーションを作成します。Create a console application for the command. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。From the File menu, point to New, and then click Project.

  2. [新しいプロジェクト] ダイアログ ボックスで、[Visual C#] を展開し、[Windows] をクリックして、[コンソール アプリケーション] テンプレートをクリックします。In the New Project dialog box, expand Visual C#, click Windows, and then click the Console Application template. プロジェクトに ChangeOSVersionCS という名前を付けます。Name the project ChangeOSVersionCS.

  3. Program.cs で、ファイルの先頭にある他の using ステートメントに次の行を追加します。In Program.cs, add the following line to the other using statements at the top of the file:

    using System.Xml;
    
  4. ChangeOSVersionCS 名前空間で、Program クラスの実装を次のコードに置き換えます。In the ChangeOSVersionCS namespace, replace the Program class implementation with the following code:

    class Program
    {
       /// <summary>
       /// This function will set the minimum operating system version for a ClickOnce application.
       /// </summary>
       /// <param name="args">
       /// Command Line Arguments:
       /// 0 - Path to application manifest (.exe.manifest).
       /// 1 - Version of OS
       ///</param>
       static void Main(string[] args)
       {
          string applicationManifestPath = args[0];
          Console.WriteLine("Application Manifest Path: " + applicationManifestPath);
    
          // Get version name.
          Version osVersion = null;
          if (args.Length >=2 ){
             osVersion = new Version(args[1]);
          }else{
             throw new ArgumentException("OS Version not specified.");
          }
          Console.WriteLine("Desired OS Version: " + osVersion.ToString());
    
          XmlDocument document;
          XmlNamespaceManager namespaceManager;
          namespaceManager = new XmlNamespaceManager(new NameTable());
          namespaceManager.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1");
          namespaceManager.AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2");
    
          document = new XmlDocument();
          document.Load(applicationManifestPath);
    
          string baseXPath;
          baseXPath = "/asmv1:assembly/asmv2:dependency/asmv2:dependentOS/asmv2:osVersionInfo/asmv2:os";
    
          // Change minimum required operating system version.
          XmlNode node;
          node = document.SelectSingleNode(baseXPath, namespaceManager);
          node.Attributes["majorVersion"].Value = osVersion.Major.ToString();
          node.Attributes["minorVersion"].Value = osVersion.Minor.ToString();
          node.Attributes["buildNumber"].Value = osVersion.Build.ToString();
          node.Attributes["servicePackMajor"].Value = osVersion.Revision.ToString();
    
          document.Save(applicationManifestPath);
       }
    }
    

    このコマンドは、2 つの引数を受け取ります。1 つはアプリケーション マニフェストへのパス (つまり、ビルド処理でマニフェストが作成されるフォルダーであり、通常は Projectname.publish)、もう 1 つは新しいオペレーティング システムのバージョンです。The command takes two arguments: the path of the application manifest (that is, the folder in which the build process creates the manifest, typically Projectname.publish), and the new operating system version.

  5. プロジェクトをビルドします。Build the project. [ビルド] メニューの [ソリューションのビルド] をクリックします。On the Build menu, click Build Solution.

  6. .exe ファイルを C:\TEMP\ChangeOSVersionVB.exe などのディレクトリにコピーします。Copy the .exe file to a directory such as C:\TEMP\ChangeOSVersionVB.exe.

    次に、ビルド後のイベントでこのコマンドを呼び出して、アプリケーション マニフェストを変更します。Next, invoke this command in a post-build event to modify the application manifest.

ビルド後のイベントを呼び出してアプリケーション マニフェストを変更するにはTo invoke a post-build event to modify the application manifest

  1. 発行するプロジェクト用の Windows アプリケーションを作成します。Create a Windows application for the project to be published. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。From the File menu, point to New, and then click Project.

  2. [新しいプロジェクト] ダイアログ ボックスで、[Visual C#] を展開し、[Windows クラシック デスクトップ] をクリックしてから [Windows フォーム アプリケーション] テンプレートをクリックします。In the New Project dialog box, expand Visual C#, click Windows Classic Desktop, and then click the Windows Forms App template. プロジェクトに CSWinApp という名前を付けます。Name the project CSWinApp.

  3. ソリューション エクスプローラーでプロジェクトを選択し、[プロジェクト] メニューの [プロパティ] をクリックします。With the project selected in Solution Explorer, on the Project menu, click Properties.

  4. プロジェクト デザイナーで、[発行] ページに移動し、[発行場所]C:\TEMP に設定します。In the Project Designer, locate the Publish page and set Publishing location to C:\TEMP.

  5. [今すぐ発行] をクリックして、プロジェクトを発行します。Publish the project by clicking Publish Now.

    マニフェスト ファイルがビルドされ、C:\TEMP\CSWinApp_1_0_0_0\CSWinApp.exe.manifest に配置されます。The manifest file will be built and put in C:\TEMP\CSWinApp_1_0_0_0\CSWinApp.exe.manifest. マニフェストを表示するには、ファイルを右クリックし、[プログラムから開く][一覧からプログラムを選択する][メモ帳] の順にクリックします。To view the manifest, right-click the file, click Open with, select Select the program from a list, and then click Notepad.

    ファイルで <osVersionInfo> 要素を探します。Search in the file for the <osVersionInfo> element. たとえば、バージョンは次のように記述されています。For example, the version might be:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. プロジェクト デザイナーで、[ビルド イベント] タブをクリックし、[ビルド後の編集] をクリックします。In the Project Designer, click the Build Events tab and click the Edit Post-build button.

  7. [ビルド後に実行するコマンド ライン] ボックスに次のコマンドを入力します。In the Post-build Event Command Line box, type the following command:

    C:\TEMP\ChangeOSVersionCS.exe "$(TargetPath).manifest" 5.1.2600.0

    プロジェクトをビルドすると、このコマンドでアプリケーション マニフェストのオペレーティング システムの最小バージョンが 5.1.2600.0 に変更されます。When you build the project, this command will change the minimum operating system version in the application manifest to 5.1.2600.0.

    $(TargetPath) マクロは作成される実行可能ファイルの完全なパスを表すので、$(TargetPath).manifestbin ディレクトリに作成されるアプリケーション マニフェストを指定します。Because the $(TargetPath) macro expresses the full path for the executable being created, the $(TargetPath).manifest will specify the application manifest created in the bin directory. 発行することにより、前に設定した発行場所にこのマニフェストがコピーされます。Publishing will copy this manifest to the publishing location that you set earlier.

  8. プロジェクトを再び発行します。Publish the project again. [発行] ページに移動して、[今すぐ発行] をクリックします。Go to the Publish page and click Publish Now.

    マニフェストを再び表示します。View the manifest again. マニフェストを表示するには、発行ディレクトリを開きし、ファイルを右クリックして、[プログラムから開く][一覧からプログラムを選択する][メモ帳] の順に選択します。To view the manifest, open the publish directory, right-click the file, click Open with, select Select the program from a list, and then click Notepad.

    これで、バージョンは次のように表示されます。The version should now read:

    <os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />
    

関連項目See also