C#で書いてビルドしたEXEファイルには、バージョン番号とかタイトルなどの情報が保存されていて、System.Reflectionを使うと読み出すことができます。その手順をメモします。
EXEファイルのバージョン番号を表示するには、フォームにボタンを貼って、下記のコードを追記する。ああ、最初に「using System.Reflection;」をお忘れなく。
呼び出す側は、
と1行で終わり。簡単でよろしい。
*
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行で終わり。簡単でよろしい。
*


コメント
コメントを投稿