アセンブリが持つ3つのバージョンの意味

.netで作ったアセンブリは、下の3つのバージョンを持っています。

  • AssemblyVersion
  • AssemblyFileVersion
  • AssemblyInformationalVersion

なぜ3つもバージョンが有るのだろうと思い、調べてみました。

 

・AssemblyVersion

アセンブリ内に保存され、CLR(つまり.NET Framework)が使用するバージョンのようです。このバージョンを変更すると、厳密名を持つアセンブリの場合読み込めなくなったりします。

・AssemblyFileVersion

Win32ファイルバージョンリソースというところに格納されるそうです。.dllや.exeを右クリックした時に表示されるファイルバージョンの値、というとわかりやすいでしょうか。

・AssemblyInformationalVersion

基本的にはAssemblyFileVersionと同じですが用途が違い、こちらはファイルのバージョンではなく製品のバージョンを表します。同じ製品内ではこのバージョンは統一したほうが良さそうです。

 

まとめると、

  • AssemblyVersionはCLRが使う値
  • AssemblyFileVersionはそのファイル(.exe,  .dll, etc...)自身のバージョン
  • AssemblyInformationalVersionはファイルが所属する製品のバージョン

ということです。

これを見る限りでは、AssemblyVersionとAssemblyFileVersionはどちらもファイルに関するバージョンなので、まとめたほうが良さそうです。

 

 

おまけ

バージョンの統一の仕方

3つのバージョン情報、使い分けるときはいいのですが、AssemblyVersionとAssemblyFileVersionは同じ値にすることが多そうです。

手動で設定するとミスも増えるし面倒ですが、一部バージョンを省略すると、自動で他のバージョンに合わせてくれるようです。

調べてみると以下の様になりました。

  • AssemblyVersionのみを設定すると、他の2つのバージョンも同じ値になる。
  • AssemblyFileVersionのみ設定すると、他の2つのバージョンも同じ値になる。
  • AssemblyInformationalVersionのみ設定すると、他の2つのバージョンは0.0.0.0になる。

 

参考にしたサイト