アセンブリ情報を取得する

アセンブリ情報とは、AssemblyInfo.csで定義されている情報のことで、プロジェクト→プロパティ→アプリケーションの「アセンブリ情報」ボタンを押したときに表示されるダイアログの内容のことです。

これらの情報はすべてアセンブリに埋め込まれているので、プログラムの実行中に取得することができます。
実行しているアセンブリを取得する方法はいくつかあります。

  1. Assembly.GetExecutingAssembly()
  2. Assembly.GetCallingAssembly()
    • 今実行しているメソッドを呼び出したアセンブリを取得します
  3. Deployment.Current.EntryPointAssembly + Assembly.Load()
    • Deployment.Current.EntryPointAssemblyはメインのアセンブリ名を取得し、Assembly.Load()で読み込む
  4. Application.Current.GetType().Assembly

1と2はdllの可能性もあるので3か4を使います。
アセンブリを取得することができればカスタム属性から値を取得します。
例えばアセンブリ情報のタイトルがほしいときは、以下のようにします。

// アセンブリの取得
var appAssembly = Application.Current.GetType().Assembly;
// カスタム属性AssemblyTitleAttributeの取得
var assemblyTitle = appAssembly.GetCustomAttributes(typeof(AssemblyTitleAttribute), true).Single()
                as AssemblyTitleAttribute;

Debug.WriteLine(assemblyTitle.Title);  // → LostFriends

タイトルやバージョン情報の管理に使えるかもしれませんね。リソースに定義してもいいけど...

参考:On a path to a generic About page