参照設定のプロパティ設定。特定バージョンの挙動について

参照設定のプロパティ設定、特定バージョンについて調査してみました。
この特定バージョンの設定ですが、以下の2条件を満たしたアセンブリを参照設定した場合に設定できるようになります。

  • 厳密名を設定している
  • GAC(Global Assembly Cache)に登録している

実際にGACに登録して動作を確認したところ、特定バージョン=Trueに設定した場合で、コンパイル時に参照設定しているアセンブリのバージョンが一致しないとエラーや警告が表示される事がわかりました。この設定はコンパイル時にバージョン不一致を検出するかどうかのオプションということです。実行時のバージョンが異なる場合の挙動については、厳密名を持つアセンブリとは何なのか調べてみたアセンブリ・DLLの差し替え(アセンブリリダイレクト)にまとめています。

特定バージョン=Falseに設定している場合は、コンパイル時に見つかった最新のバージョンに自動的に結びついてコンパイルされます。

通常、コンパイル時は最新バージョンに結びつけるので、特定バージョン=Trueに設定するシチュエーションはまれだと思います。新しいバージョンがGACに登録されている環境で旧バージョンへの参照設定を保持したいような、複数バージョンの構成管理をしているようなケースですね。特定バージョンのプロパティは実行時の挙動に影響を与えるような誤解がよくありますが、コンパイル時の動作に関する設定です。

バージョン不一致の場合のエラー画面。