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

VisualStudio には、ビルド前イベント、と、ビルド後イベントという自動的にスクリプトを実行する機能があります。

ビルド前イベントは、ソースコードの情報を記録したり、ソースコードにリソース文字列を仕込んだり、というアクションに利用できます。

ビルド後イベントは、ビルドされた実行ファイルを本番用実行ディレクトリに自動コピーするアクションなどに利用できます。

ここではビルド前イベントの活用を考えてみます。ビルド前イベントは、Fig. 1 に示すように指定できます。Windows の cmd.exe のスクリプトをそのまま記述します。

Fig. 1 VisualStudio でビルド前イベントを記述する

ここで、リビルドの条件を Fig. 2 のように指定しておけば、バッチビルドを実行すれば、Debug ビルド、Release ビルドがイッキに実行できます。コマンドの場所はメニューバーの [ビルド]...[バッチビルド]です。

Fig. 2 バッチによるリビルド実行

ビルド前イベントのコマンドラインを下記のように指定してみます。

$(xxx) は、VisualStudio によって定義されたマクロ文字列です。アプリケーションの名前や、プロジェクトの開発ディレクトリなどが変われば、それに応じて文字列を変更してくれます。

%DATE% や %TIME% は cmd.exe によってあらかじめ定義された文字列です。

echo プリビルドスクリプトを開始します.
echo %DATE% %TIME%
echo $(ConfigurationName)
echo $(SolutionDir)
echo $(SolutionPath)
echo $(ProjectDir)
echo $(ProjectPath)
echo $(TargetDir)
echo $(TargetPath)
echo プリビルドスクリプトが完了しました.

実行結果は VisualStudio の出力ウインドウに表示されます。

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

以上のようにユーザーが記述したスクリプトをビルド寸前に実行してくれます。

この事実は call コマンドを使って自分で作成したツールをビルド前に実行することが可能であることを示唆しています。