C#でバージョン情報を取得する

Visual Studioなどで開発していると、バージョン番号は「アセンブリ情報」というところで値を管理することになります。

EXEファイルのプロパティの詳細タブで表示される内容は、このアセンブリ情報で設定したものが表示されています。

 

作成したアプリケーションでバージョン情報画面などを出す場合を考えてみましょう。

バージョン番号は1ヶ所で管理されるべきで、表示する内容はアセンブリ情報から値を取得するのが望ましいわけです。

アセンブリ情報の設定する

Visual Studioの場合、アセンブリ情報はプロジェクトのプロパティから「アセンブリ情報画面」を開いて値を設定します。

 

メニュー → プロジェクト(P) → [プロジェクト名]のプロパティ(E)...

 

ちなにみ、ここで設定した内容は AssemblyInfo.cs ファイルに埋め込まれます。

アセンブリ情報からバージョンを取得する

            System.Reflection.Assembly     assembly = Assembly.GetExecutingAssembly();
            System.Reflection.AssemblyName asmName  = assembly.GetName();
            System.Version                 version  = asmName.Version;

            string text = "Version " + version.ToString();

GetExecutingAssemblyメソッドを使い現在実行中のコードのアセンブリを取得します。

更に取得したアセンブリのGetNameメソッドを使いAssemblyNameオブジェクトを取得します。

AssemblyNameオブジェクトVersionプロパティにバージョン情報が格納されています。

 

バージョン情報は以下のような形式になっていて、それぞれを数値型でも取得できます。

 

major.minor.build.revision

 

 

 

 

アセンブリ情報からカスタム属性を取得する

タイトルや著作権表記を取得したい場合、専用のメソッドがないのでカスタム属性というところから取得します。

 

以下の例では、タイトルと著作権表記を取得しています。

var assembly     = Assembly.GetExecutingAssembly();
var asmTitle     = (AssemblyTitleAttribute)Attribute.GetCustomAttribute(assembly,
                                                        typeof(AssemblyTitleAttribute));
var asmCopyright = (AssemblyCopyrightAttribute)Attribute.GetCustomAttribute(assembly,
                                                    typeof(AssemblyCopyrightAttribute));

GetExecutingAssemblyメソッドを使い現在実行中のコードのアセンブリを取得します。

更にGetCustomAttrivuteメソッドを使い取得したい属性の種類を指定して属性を取得します。

 

取得できる属性の種類は以下の通りです。

  • AssemblyTitleAttribute
  • AssemblyDescriptionAttribute
  • AssemblyCompanyAttribute
  • AssemblyProductAttribute
  • AssemblyCopyrightAttribute
  • AssemblyTrademarkAttribute
  • AssemblyFileVersionAttribute