2012-03-29 8 views
5

.NET 4でコンパイルされたライブラリがあり、.NET 4.5の実行可能ファイルから参照すると、ライブラリで定義された操作が実行されます。どの.NET Frameworkバージョンでライブラリが実行されるのですか

.NET 4.5でビルドされたcliアプリケーションがあります.net 4と.net 4.5の両方のプロジェクトを参照していますが、どちらも同じバージョンのADO.netコンポーネントを使用するのだろうと思います。

答えて

5

これらは両方とも同じCLR(この場合は4.5)で実行されます。

.NET < = 3.5の場合、同じアセンブリの複数のバージョンがロードされる場合があります(ADO.NETがバージョン4.0を読み込み、同じアプリケーションドメインに4.5を読み込む可能性があります)。私が知る限り、彼らはCLR 4.0でそれを取り除いた(あるいは、少なくともそれはあまり起こらなかった)。

編集:BTW - CLR(コードを実行しているランタイム)と読み込まれているアセンブリのバージョンには違いがあります。

CLRのバージョンは、プロセスの機能、実行可能なバージョン、ロード可能なアセンブリのバージョンを制御します。たとえば、CLR 4.5では、すべてのアセンブリ(1.0 - > 4.5)のほとんどをロードできます。彼らはすべて4.5 CLRの下で実行されます。さらに、同じプロセスで同じ互換バンドから2つのバージョンのCLRを実行することはできません。 CLR 4.5と4.0はどちらも同じ互換バンドとみなされるため、どちらか一方が読み込まれます。 CLR 1.0,1.1,2.0,3.0、および3.5はすべて同じ互換バンド内にあるとみなされるため、それらのうちの1つだけがロードされます。ただし、CLR 3.5とCLR 4.5を同時にロードすることはできます。

+0

私は、異なるフレームワークをターゲットとしたアセンブリを参照すると、コンパイルエラーが発生すると考えました。 –

+1

バイナリブレークがある場合(わずかな距離です)、より高度なCLRバージョンをターゲットとしているアセンブリを参照しようとしている場合(4.0アセンブリを参照している2.0アセンブリが破損します)、逆の場合はありません –

+0

別のバージョンのアセンブリを指定しても破損すると思います。たとえば、4.0でアセンブリビルドがあり、web.config(またはそれがロードされている場所)で指定した場合3.5 – Thea

関連する問題