1

.net2.0アセンブリを参照したい.net4.0プロジェクトがあります。この記事から理解したように、.net 2.0アセンブリは4.0ランタイムで読み込まれ、下位互換性は保証されません。この場合、プロセスを強制的に並べて実行し、2.0ランタイムをロードする方法はありますか?

4

1 に答える 1

2

In process side-by-side バージョン管理は、データを共有せずに独立して実行されるコードに対してのみサポートされます。特に、CLR を読み込んでマネージ コードを実行するネイティブ コードの場合。これは、CLR のバージョン管理の問題に対する解決策です。Explorer などのアンマネージ プログラムが CLR をロードすると、たとえば .NET で記述されたシェル拡張をサポートすると、拡張が要求したバージョンによって CLR バージョンが選択されます。別の拡張機能が新しいバージョンの CLR を必要とする場合、これはうまく機能しません。.NET 4 のサイド バイ サイド バージョニング機能はそれを解決し、各拡張機能は独自の CLR を取得します。データの共有は必要ありません。これらの拡張機能は相互に認識していません。

明らかに、これはあなたがやろうとしていることの解決策ではありません。Microsoft は、.NET 4.0 を以前の .NET リリースと可能な限り互換性を持たせるために多大な努力を払っており、.NET 2.0 アセンブリのロードは確かに十分にサポートされています。ある時点まで、彼らはこの機会を利用して、いくつかの古いバグを修正し、その修正で古いコードが壊れる可能性がありました。技術的には、2.0 コードがそのようなバグの動作に依存している可能性がありますが、そうである可能性は非常に低いです。コードを再テストするだけです。

于 2012-11-14T12:42:57.247 に答える