web-dev-qa-db-ja.com

アセンブリファイルのバージョンを確認する方法

AssemblyInfoには2つのアセンブリバージョンがあります。

  1. AssemblyVersion:属性付けされているアセンブリのバージョンを指定します。
  2. AssemblyFileVersion:Win32ファイルバージョンリソースに特定のバージョン番号を使用するようにコンパイラに指示します。 Win32ファイルのバージョンは、アセンブリのバージョン番号と同じである必要はありません。

次のコードでAssembly Versionを取得できます。

Version version = Assembly.GetEntryAssembly().GetName().Version;

しかし、どうすればAssembly File Versionを取得できますか?

650
Enyra

あなたが本当に欲しいものについての明確化を求める上記の私のコメントを見てください。うまくいけば、これはそれです:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(Assembly.Location);
string version = fvi.FileVersion;
787
Xiaofu

3つのバージョン Assembly file 、および product があります。明示的に指定しなければ、それらは異なる機能によって使用され、異なるデフォルト値を取ります。

string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
string assemblyVersion = Assembly.LoadFile('your Assembly file').GetName().Version.ToString(); 
string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; 
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
176
Check6

アプリケーションファイルのバージョン(アセンブリ情報 - >ファイルのバージョンで設定されているもの)にアクセスしたいときに、バージョンを表示するためにフォームのロード時にラベルのテキストをそれに設定するとします。

versionlabel.Text = "Version " + Application.ProductVersion;
59
syntap

UPDATE:Richard Grimesが 私の引用した記事 、@ Iain、@ Dmitry Lobanovで述べたように、私の答えは理論的には正しいが実際には間違っている。

私は数え切れないほどの本などを覚えているはずですが、[Assembly: XXXAttribute]を使ってこれらのプロパティを設定している間、それらはコンパイラによってハイジャックされてVERSIONINFOリソースに入れられます。

上記の理由から、 @ Xiaofu's answer にあるアプローチを使用する必要があります。シグナルが抽出された後で属性が削除されるためです。


パブリック静的文字列GetProductVersion()
 {
 var attribute =(AssemblyVersionAttribute)アセンブリ
 .GetExecutingAssembly()
 .GetCustomAttributes(typeof(AssemblyVersionAttribute) 、true)
 .Single(); 
 return attribute.InformationalVersion; 
} 

http://bytes.com/groups/net/420417-assemblyversionattribute - そこに記載されているように、別の属性を探している場合は、それを上記に代入してください)

20
Ruben Bartelink

これを使って:

((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
    Assembly.GetExecutingAssembly(), 
    typeof(AssemblyFileVersionAttribute), false)
).Version;

またはこれ:

new Version(System.Windows.Forms.Application.ProductVersion);
3
user6438653