« 【Windows ストア アプリ開発】 プライバシー ポリシーのリンクを出すコードを書かなくても OK になったよ~♪ (たぶん) #win8dev_jp | トップページ | 【 #VS2013 】アカウントの画像を変更する方法 »

2014年8月 2日 (土)

【Metro TIPS #85 補講】 アセンブリのバージョン番号を取得するには?[ユニバーサルWindowsアプリ開発]

@ITの記事では軽く触れただけのネタ。

WinRT/Metro TIPS:アプリのバージョン番号を取得するには?[ユニバーサルWindowsアプリ開発]」 の注 *8 で、次のように書きました。

(AssemblyInfo クラスに) 記述するバージョン番号はアセンブリ(.exe/.dllファイル)ごとに付けられるもので、リフレクションを利用して取得することも可能だ(アセンブリのTypeInfoオブジェクトを取得し、そのAssemblyプロパティのCustomAttributesプロパティを列挙する)。

実際のコードは、例えば↓こんなふうになります。

public class AssemblyInfoData
{
  public string Title { get; set; }
  public string Version { get; set; }
  public string FileVersion { get; set; }
}

public class AssemblyInfoLoader
{
  public static AssemblyInfoData GetFrom(Type targetType)
  {
    var assembly = targetType.GetTypeInfo().Assembly;
    return new AssemblyInfoData()
      {
        Title = assembly.GetCustomAttribute<AssemblyTitleAttribute>().Title,
        Version = assembly.GetName().Version.ToString(),
        FileVersion = assembly.GetCustomAttribute<AssemblyFileVersionAttribute>().Version,
      };
  }
}


ただし、GetTypeInfo() メソッドを使うため、 冒頭に using System.Reflection; が必要です。

これで、例えば App クラスが含まれているアセンブリ (通常はアプリの .exe ファイル) のバージョン情報が欲しければ、

var data = AssemblyInfoLoader.GetFrom(typeof(App));

として、 AssemblyTitle・AssemblyVersion・AssemblyFileVersionが取得できます。

Ex02a

Ex01a

|

« 【Windows ストア アプリ開発】 プライバシー ポリシーのリンクを出すコードを書かなくても OK になったよ~♪ (たぶん) #win8dev_jp | トップページ | 【 #VS2013 】アカウントの画像を変更する方法 »

プログラミング」カテゴリの記事

* プログラミング ( Metro スタイル )」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 【Metro TIPS #85 補講】 アセンブリのバージョン番号を取得するには?[ユニバーサルWindowsアプリ開発]:

« 【Windows ストア アプリ開発】 プライバシー ポリシーのリンクを出すコードを書かなくても OK になったよ~♪ (たぶん) #win8dev_jp | トップページ | 【 #VS2013 】アカウントの画像を変更する方法 »