5

明確にする必要がある 2 つのシナリオがあります。

  1. .NET 3.5 でコンパイルされた実行可能ファイルは、.NET 1.1 でコンパイルされたライブラリを使用する必要があり、ライブラリは 1.1 ランタイムで実行する必要があります。

  2. .NET 1.1 でコンパイルされた実行可能ファイルは、.NET 3.5 でコンパイルされたライブラリを使用する必要があります。

.NET ランタイムの 2 つのバージョンをロードすることは不可能であり、Microsoft のドキュメントはこの問題について非常に曖昧であると述べている信頼できる情報源を見つけることができません。

4

3 に答える 3

7

いいえ -- CLR を同じプロセスに 2 回読み込むことはできません。CLR ホスティングのドキュメントを参照してください。

以前のバージョンのランタイムと同様に、CorBindToRuntimeEx 関数はランタイムを初期化します。ロードするランタイムのバージョンを選択できますが、プロセスは 1 つのバージョンしかホストできません。

于 2008-10-14T15:36:32.227 に答える
3

.NET 4 では、 In-Process Side by Sideを使用して、同じプロセスで異なる CLR バージョンをホストできるようにすることが約束されています。

于 2010-01-14T11:07:07.733 に答える
2

ケース #1 の場合、ライブラリを 1.1 ランタイムでホストする必要がある特定の理由 (破壊的変更など) はありますか? 1.1 でコンパイルされた Web サービスを介してライブラリを公開し、代わりに実行可能ファイルが Web サービスを指すようにすることは可能ですか? (または、独自のプロセスでライブラリを取得するための他のリモート手法?)

ケース #2 の場合、1.1 アプリを 2.0/3.5 で再コンパイルして、同じプロセスに常駐させることはできますか?

いずれにせよ、Rob Walker は正しいです (そして私は賛成しました)。同じプロセスで 2 つのバージョンのランタイムをホストすることはできません。そのため、何らかの方法で回避する必要があります。どちらの場合も、ソースが利用可能でなければならないので、再コンパイルと再テストが必要だと思います。

于 2008-10-14T15:52:47.637 に答える