7

P4 と P3 の 2 つのプロジェクトがあり、それぞれ .net 4.0 と 3.5 をターゲットにしているとします。

各プロジェクトには、System.Data への参照もあります。P4の場合はSystem.Data v4.0.0.0まで P3の場合はSystem.Data v2.0.0.0まで

プロジェクト P4 も P3 を参照しています。

P4 をロードして実行すると、.net 4.0 CLR が使用されます。実行時に、System.Data への参照は、P4 と P3 の両方で v4.0 に解決されるようです。assemblyBinding リダイレクトを使用してこれをオーバーライドできますが、P4 と P3 の両方が v2.0 に解決されます。

P4 が v4.0 を使用し、P3 が v2.0 を使用するようにアプリケーションを構成する方法はありますか?

4

2 に答える 2

4

これを見てください: In-Process Side-by-Side 参考になるかもしれません。

于 2012-01-31T15:01:53.413 に答える
3

P3 を制御できる場合は、はい。プロジェクトの参照セクションに移動し、System.Data 参照を見つけて、そのプロパティ ウィンドウを表示します (右クリック -> [プロパティ])。

「特定のバージョン」プロパティで「True」を選択します。再コンパイル、再デプロイなど

.NET 2、3、または 3.5 がマシンにインストールされていない場合、アセンブリを読み込もうとすると、あらゆる種類のランタイム エラーが発生することに注意してください。

編集

私はこれを試しましたが、運がありません。P3 は引き続き v4.0 を実行します。この設定が、P3 用に生成されたアセンブリに目に見える影響を与えるかどうか知っていますか? たとえば、「特定のバージョン」が true に設定されているかどうかに関係なく、マニフェストには「.ver 2:0:0:0」と表示されます。

これを app.config に追加してみてください:

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>
于 2012-01-31T14:44:52.913 に答える