これは、CLRのバージョンが大幅に変更された場合を除いて、これまで不可能でした。これは、.NET 1.0から1.1、1.1から2.0、および3.5から4.0で機能しました。中間バージョンにはCLRバージョンの変更はなく、4.0から4.5へのバージョン変更もありません。
これにより、WaitHandle.WaitOne(int)メソッドでかなり悪名高い問題が発生しました。これは、mscorlibの.NET2.0SP1バージョンに追加されたオーバーロードです。対応する変更がなくても、[AssemblyVersion]は2.0.0.0のままです。そのため、プログラマーは無意識のうちにオーバーロードを使用し、サービスパックがインストールされていないマシンにコード爆弾を仕掛けました。
Microsoftは、.NET 4でこの問題を修正し、参照アセンブリはランタイムアセンブリのコピーではなくなりました。メタデータのみが含まれ、ILは含まれません。その結果、何かが壊れることを恐れずにパブリッククラスを変更できるようになり、参照アセンブリは更新されませんでした。.NET 4のアップデートがたくさん出荷されており、事故のことは聞いたことがありません。
.NET4から4.5でも同じです。4.0参照アセンブリを使用する場合、4.5固有のクラスまたはメソッドを誤って使用しないようにすることができます。4.5で追加された機能を実際に使用するには、4.5参照アセンブリでコンパイルする必要があります。