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

ビルド前イベントはバッチコマンドですので、テキストファイルを出力することができます。

ビルド前に下記のような cs ファイルを上書き配置してやれば、アプリケーションにビルドした時間の文字列を埋め込むことが可能です。

myconst.cs はあらかじめ、プロジェクトに追加しておいてください。ビルド寸前ごとに myconst.cs の内容は上書きされて、その直後にビルドされるため、実質的にビルドの時間をアプリケーションに埋め込むことになります。

namespace aaa
{
    public class MyConst
    {
        public const string BUILD_DATETIME = "2025/05/25 11:26:18.68";
    }
}

下記がビルド前イベントの実行スクリプトです。$(RootNamespace) は、名前空間を示す文字列が入ります。VisualStudioによってプロジェクトごとに動的に設定されるマクロ変数です。

echo プリビルドスクリプトを開始します.

(
    echo namespace $(RootNamespace)
    echo {
    echo     public class MyConst
    echo     {
    echo         public const string BUILD_DATETIME = "%DATE% %TIME%";
    echo     }
    echo }
) > "$(ProjectDir)myconst.cs"


echo プリビルドスクリプトが完了しました.

下記が、Form1 のタイトルバーに MyConst.BUILD_DATETIME という文字列を表示するコードです。

using System;
using System.Windows.Forms;

namespace aaa
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private void Form1_Load( object sender, EventArgs e )
		{
            // ビルドされた時間をタイトルバーに表示する.
			this.Text = MyConst.BUILD_DATETIME;
		}
	}
}

バッチファイルで動的に生成するテキストファイルには、日本語をはじめマルチバイト文字を利用しないでください。バッチコマンドで UTF-8 の出力設定を指定しないといけないので面倒です。

どうしてもコメントをいれたければ "// kore ha build jikan wo shimesu mojiretsu." のように英語で書いてください。