行ファイルのプロパティにバージョン情報を表示したい,の巻
2003/11/14 新規

VS.NET 等のツールを使っている人は、きっと専用の設定パネルがあると思います。 ・・・ですが、自分のように SDK のみで開発している人にとっては、意外に見落としがちなモノだと思います。

「実行ファイルのプロパティ」というのは、.EXE ファイルを右クリックしたときに表示される プロパティ・ダイアログのことです。 たとえば「nmake.exe」というファイルを右クリックすると、こんなダイアログが表示されます。

nmake.exe のプロパティ

このダイアログに、いろいろ情報を載せるというコトになります。

方法は簡単で、C# に特有な属性([ と ] で囲むアレ)を用います。 Main() メソッドを実装するときに大抵の人は [STAThread] と書くと思いますが、コレと同じ類です。
実際には、こんな感じになります。
例1

using System.Reflection;

[assembly: AssemblyCompany("Musi_chan")]
[assembly: AssemblyProduct("Sample")]
[assembly: AssemblyDescription("E1.00a [14 Nov 2003]")]
[assembly: AssemblyCopyright("Copyright(C) Musi_chan 2003")]
[assembly: AssemblyTitle("This is a sample program.")]
[assembly: AssemblyVersion("1.00.0.1")]

このような内容を、任意のソース1つに書いておくだけです。 自分の場合は Main() メソッドのあるクラスのソース・ファイルに書いていましたが、 この内容だけを記述したファイルを単独で用意しておくのが一般的みたいです。 たとえば「AssemblyInfo.cs」といった感じのファイルを用意して、一緒にビルドします。

 

Assembly 属性と、それに対応するプロパティ内の項目は次のようになっています。

AssemblyCompany
「バージョン情報」タグの「会社名」
AssemblyCopyright
「バージョン情報」タグの「著作権」
AssemblyCulture
「バージョン情報」タグの「言語」(?)
AssemblyDescription
「バージョン情報」タグの「コメント」
AssemblyFileVersion
「バージョン情報」タグの「ファイル バージョン」
「バージョン情報」タグの「製品バージョン」
AssemblyProduct
「バージョン情報」タグの「製品名」
AssemblyTitle
「全般」タグの「説明」
「バージョン情報」タグの「説明」
AssemblyTrademark
「バージョン情報」タグの「商標」
AssemblyVersion
「バージョン情報」タグの「Assembly Version」

また、Assembly 属性には(当たり前かもしれませんが)const 宣言した文字列定数も使用できます。
例2

[assembly: AssemblyCompany(HogeHogeClass.COMPANY_NAME)]
[assembly: AssemblyCopyright("Copyright(C) "+HogeHogeClass.COMPANY_NAME+" 2003")]
HogeHogeClass クラスには、「public const」宣言をした string 型の変数(const なので定数?)を用意しておきます。 こうすれば会社名などを一元管理できて、お得です。


戻る