web-dev-qa-db-ja.com

AssemblyInfo.csからのアセンブリバージョンの取得

Webアプリケーションには_AssemblyInfo.cs_ファイルがありますが、同じソリューションには他のプロジェクトがあります。ほとんどはクラスライブラリです。 UIに_AssemblyInfo.cs_のアセンブリバージョンを表示するように指示されます。 SO from プログラム内でのC#AssemblyFileVersionの使用 で次の解決策を見つけました

_using System.Reflection;
Version version = Assembly.GetExecutingAssembly().GetName().Version;
_

または

_using System.Reflection;
using System.IO;

FileVersionInfo fv = System.Diagnostics.FileVersionInfo.GetVersionInfo
                               (Assembly.GetExecutingAssembly().Location);

Console.WriteLine("AssemblyVersion : {0}", 
         Assembly.GetExecutingAssembly().GetName().Version.ToString());

Console.WriteLine ("AssemblyFileVersion : {0}" , 
         fv.FileVersion.ToString ());
_

しかし、これは私を少し混乱させます。 GetExecutingAssembly()と表示され、他のクラスライブラリから別のアセンブリで実行されている場合これらのコードは、常にWebプロジェクトにある_AssemblyInfo.cs_ファイルからフェッチしますか? (これは私が欲しいものです)

28
Tarik

ドキュメントが示すように、Assembly.GetExecutingAssembly()は、呼び出しコードが内部でコンパイルされたアセンブリを取得します。

より明示的(かつ高速)にしたい場合は、typeof(SomeType).Assemblyを記述できます。ここで、SomeTypeは探しているプロジェクト内の任意のタイプです。

28
SLaks