EXEファイルのバージョン番号などを得る手順

C#で書いてビルドしたEXEファイルには、バージョン番号とかタイトルなどの情報が保存されていて、System.Reflectionを使うと読み出すことができます。その手順をメモします。


EXEファイルのバージョン番号を表示するには、フォームにボタンを貼って、下記のコードを追記する。ああ、最初に「using System.Reflection;」をお忘れなく。
Attribute att = Attribute.GetCustomAttribute(
 Assembly.GetExecutingAssembly(),
 typeof(AssemblyFileVersionAttribute));
AssemblyFileVersionAttribute attVersion = (AssemblyFileVersionAttribute)att;
MessageBox.Show(attVersion.Version);
呪文みたいに長々しい。「myApp.Version」みたいに参照できたら簡単なのにね。

実行するとこんな感じ。


毎回、こんな長いコードを書くのはいやなので、クラスライブラリを作って簡単に呼び出したいと思ったとしよう。

どうするか。

まずクラスライブラリのプロジェクトを新規に作成してソリューションに追加する。下図のmyLibraryが追加したクラスライブラリ。


そして、アセンブリのバージョン番号を返すメソッドを追加する。メソッドはお気軽に呼び出したいのでstaticにしておく。
using System.Reflection;
namespace myLibrary
{
    public class myAssembly
    {
        static public string myAppVersion()
        {
            Attribute att = Attribute.GetCustomAttribute(
                 Assembly.GetCallingAssembly(),
                 typeof(AssemblyFileVersionAttribute));
            AssemblyFileVersionAttribute attVersion = (AssemblyFileVersionAttribute)att;
            return attVersion.Version;
        }
    }
}
ここで気をつけるのは、上で使っていたGetExecutingAssemblyメソッドをGetCallingAssemblyに変えること。欲しいのは自分のバージョン番号ではなく、呼び出している親のアセンブリのバージョン番号なので。EXEファイルとDLLファイルに分けたのでこれが必要。

呼び出す側は、

MessageBox.Show(myLibrary.myAssembly.myAppVersion());

と1行で終わり。簡単でよろしい。



コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。