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

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

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

 

作成したアプリケーションでバージョン情報画面などを出す場合、アセンブリ情報から値を取得するのが望ましい。

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

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