ビルド前イベントを活用する、その3

今回は、ビルド前イベントで独自の exe を実行してみましょう。

まずは、簡単な独自の exe を作ってみましょう。プロジェクト名を自分の好きな名前にしてコンソールアプリケーションを作成しましょう。わたくしは tool というプロジェクト名にして、作成される実行ファイルの名称が tool.exe になるようにしました。

下記が tool.exe のソースコードです。

using System;

namespace tool
{
	internal class Program
	{
		// デフォルトだと戻り値は void だが、これを int にする.
		static int Main( string [] args )
		{

			DateTime dtm = DateTime.Now;

			int y4 = dtm.Year;
			int m2 = dtm.Month;
			int d2 = dtm.Day;
			int hh = dtm.Hour;
			int mm = dtm.Minute;
			int ss = dtm.Second;

			const String FMT = "{0:d4}/{1:d2}/{2:d2}_{3:d2}:{4:d2}:{5:d2}";
			String str = String.Format( FMT, y4, m2, d2, hh, mm, ss );

			// コンソールに出力する.
			Console.WriteLine( str );

			// 戻り値を int にしたので、とりあえずゼロを戻す.
			return 0;

		}
	}
}

できあがった tool.exe を *.csproj というプロジェクトファイルのあるディレクトリに配置しましょう。

ビルド前イベントは下記のように記述します。

echo プリビルドスクリプトを開始します.
call $(ProjectDir)tool.exe
echo プリビルドスクリプトが完了しました.

$(ProjectDir) はプロジェクトファイルのあるディレクトリを示す文字列です。それに tool.exe を結合していますので、プロジェクトファイルのあるディレクトリにある tool.exe が実行できるというわけです。

下記がビルド時の出力ウインドウです。

リビルドを開始しました...
1>------ すべてのリビルド開始: プロジェクト:aaa, 構成: Debug Any CPU ------
1>  プリビルドスクリプトを開始します.
1>  2025/05/21_21:58:24
1>  プリビルドスクリプトが完了しました.
1>  aaa -> C:\tmp\sss\aaa\bin\Debug\aaa.exe
========== すべて再構築: 1 正常終了、0 失敗、0 スキップ ==========
========== リビルド は 21:58 に開始され、00.377 秒 かかりました ==========

現在の年月日時分秒が出力されていればビルド前イベントで独自のツールを実行できたことになります。

call $(ProjectDir)tool.exe という記述でも実行はされるとおもいますが、$(ProjectDir) に空白を含むディレクトリパスが仕込まれた場合は call で実行できない場合があります。必ず動くようにするには、ダブルクォーテーションで囲みます。

echo プリビルドスクリプトを開始します.
call "$(ProjectDir)tool.exe"
echo プリビルドスクリプトが完了しました.

このページを読んでくれているような方々は、空白混じりのディレクトリパスで開発するセンスの悪い方はいないと思いますが、念のため注意喚起です。