2009-03-11 21 views
2

たとえば、.NET Framework Version 3.0(VS2008)でコンパイルされたWindowsで.NETユーザーアプリケーション(.exe)が実行されています。そのアプリケーションが.NET Framework Version 2.0(VS2005)を使用して別のコンピュータでコンパイルされた別の.NETアセンブリ(.dll)をロードする場合、ロードされたアセンブリは既存の3.0ランタイムを使用します(下位互換モードで実行されます)。または、.NET Framework 2.0ランタイムがシステムのプロセス空間にロードされ、2つの.NETランタイムが同時に実行されるようになりますか?複数のバージョンの.NET CLRが同時に実行されています

アサーション:これはVS2008マルチターゲティングを使用していません。

答えて

1

説明したとおり、同じプロセススペースにある場合は3.0より下になります。 2つの異なるCLRがスピンアップしたい場合は、サービス境界を作成する必要があります(WebサービスまたはWCFはここでうまくいきます - 明らかにWCF 2.0ではなく)。そして、他のアプリケーションからサービスを呼び出します。

+0

グレゴリー、2つの異なるCLRを言うとき、.NET 1.1 CLRを意味しますか?その後、.NET 2.0 CLRと未リリースの.NET 4.0 CLRが存在するためです。 –

+0

はい、技術的には、3.0と3.5が上に座って2.0しかありません。しかし、それは少し複雑です。技術的には、2.0の上に置くことができるライブラリがあり、3.5のためにインストールされたlibsをリリースしました。 AJAXが気になります。 –

+0

しかし、技術的には、3つの基本ライブラリとして1.0,1.1、および2.0があります。 –

7

.NET 3.0 CLRはありません。 .NET 3.0と3.5の両方が.NET 2.0 CLRを使用します。

もちろん、.NET 3.0アプリケーションで.NET 3.0機能が使用されている場合は、.NET 3.0をインストールする必要があります。

+0

ああ、私はそれを認識しませんでした。だから3.0と3.5は、あなたのコードで使うことができる新しいアセンブリ(土台など)の束です。 – Todd

1

.NETランタイムバージョンは通常下位互換性があるため、3.0ランタイムは2.0アセンブリをホストします(3.0は基本的に2.0ランタイムと同じです)。どちらの場合でも、CLRの2つのバージョンを同じプロセスにロードすることはできません。

関連する問題