【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が取得できます。
| 固定リンク
« 【Windows ストア アプリ開発】 プライバシー ポリシーのリンクを出すコードを書かなくても OK になったよ~♪ (たぶん) #win8dev_jp | トップページ | 【 #VS2013 】アカウントの画像を変更する方法 »
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
「* プログラミング ( Metro スタイル )」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
- 【#UWP】 15063用の Acrylic Effect を、ちゃんと実装してみる(2017.08.05)
この記事へのコメントは終了しました。
コメント