ホームに戻る
出典 :
目次 :
アセンブリ情報とは
ビルド時にアセンブリ(EXE / DLL)に付与できる、バージョン、著作権などの情報のこと(下図参照)。
これらはファイルのプロパティから参照することができる。

アセンブリ情報の付与
Visual Studio上で行う場合
ここではVisual Studio 2022を例に挙げる。
- ソリューション エクスプローラー上でプロジェクトファイル(CSPROJ など)を右クリックし、「プロパティ」を選択する。
- 「パッケージ」>「全般」以下の各項目を設定する。
主な項目
- パッケージ バージョン : 製品のバージョン。major.minor.patch 形式。「製品バージョン」として参照可能。
- 製品 : 製品の名称。「製品名」として参照可能。
- 著作権 : 著作権表記。「著作権」として参照可能。
- アセンブリ バージョン : アセンブリのバージョン。major.minor.revision.build 形式。
- ファイル バージョン : ファイルのバージョン。アセンブリバージョンと同形式。省略時はアセンブリバージョンを引用する。「ファイル バージョン」として参照可能。
プログラム中からのアセンブリ情報の参照
現在動作しているアセンブリの情報は、System.Reflection.Assembly.GetExecutingAssembly() で取得できる。
取得した System.Reflection.Assembly 型から個々の情報を抽出できるが、項目によって抽出方法は異なる(後述)。
取得できる項目一覧
項目 |
AssemblyName |
FileVersionInfo (System.Diagnostics) |
Attribute |
string (ファイルパス) |
アセンブリ名 |
● |
|
|
|
タイトル |
|
● |
● |
|
説明 |
|
● |
● |
|
会社 |
|
● |
● |
|
製品 |
|
● |
● |
|
著作権 |
|
● |
● |
|
商標 |
|
● |
● |
|
アセンブリバージョン |
● |
|
|
|
ファイルバージョン |
|
● |
● |
|
パッケージバージョン |
|
● |
● |
|
GUID |
|
|
● |
|
ニュートラル言語 |
|
|
● |
|
COM参照可否 |
|
|
● |
|
パス |
|
|
|
● |
AssemblyName として取得
アセンブリ名、およびバージョンを参照する際に使用。高速に処理できる。
using System.Reflection;
:
var assemblyName = Assembly.GetExecutingAssembly().GetName();
var n1 = assemblyName.Name; //< アセンブリ名
var v1 = assemblyName.Version; //< アセンブリバージョン
FileVersionInfo として取得
ファイルにアクセスするため速度が低い。
using System.Diagnostics;
using System.Reflection;
:
var fileVersionInfo = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
var t2 = fileVersionInfo.FileDescription; //< タイトル
var d2 = fileVersionInfo.Comments; //< 説明
var c2 = fileVersionInfo.CompanyName; //< 会社
var p2 = fileVersionInfo.ProductName; //< 製品
var r2 = fileVersionInfo.LegalCopyright; //< 著作権
var m2 = fileVersionInfo.LegalTrademarks; //< 商標
var f2 = fileVersionInfo.FileVersion; //< ファイルバージョン
var f3 = fileVersionInfo.ProductVersion; //< パッケージバージョン
Attribute として取得
項目ごとに指定する型(T)が異なる点に注意。リフレクションを行うため、速度は低い。
using System.Reflection;
:
var assembly = Assembly.GetExecutingAssembly();
T GetCustomAttribute<T>() where T : Attribute =>
(T)Attribute.GetCustomAttribute(assembly, typeof(T));
var t1 = GetCustomAttribute<AssemblyTitleAttribute>().Title; //< タイトル
var d1 = GetCustomAttribute<AssemblyDescriptionAttribute>().Description; //< 説明
var c1 = GetCustomAttribute<AssemblyCompanyAttribute>().Company; //< 会社
var p1 = GetCustomAttribute<AssemblyProductAttribute>().Product; //< 製品
var r1 = GetCustomAttribute<AssemblyCopyrightAttribute>().Copyright; //< 著作権
var m1 = GetCustomAttribute<AssemblyTrademarkAttribute>().Trademark; //< 商標
var l1 = GetCustomAttribute<NeutralResourcesLanguageAttribute>().CultureName; //< ニュートラル言語
var g1 = GetCustomAttribute<GuidAttribute>().Value; //< GUID
var o1 = GetCustomAttribute<ComVisibleAttribute>().Value; //< COM参照可否
var v2 = GetCustomAttribute<AssemblyFileVersionAttribute>().Version; //< ファイルバージョン
var v3 = GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion; //< パッケージバージョン
動作ディレクトリを取得
Assembly のプロパティ Location より、アセンブリのパスを参照可能。
また、System.IO.Path.GetDirectoryName() でアセンブリが格納されているディレクトリ( = 実行ディレクトリ)を抽出できる。
using System.Reflection;
:
var assembly = Assembly.GetExecutingAssembly();
string path = assembly.Location; //< ファイルパス
string dir = System.IO.Path.GetDirectoryName(path); //< 実行ディレクトリ