私はP4とP3という2つのプロジェクトを持っており、それぞれ.net 4.0と3.5を対象としています。私の.Netアプリケーションは.netフレームワークライブラリの2つの異なるバージョンを参照できますか?
各プロジェクトには、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を使用するようにアプリケーションを構成する方法はありますか?
私はこれを試しましたが、運がありません。 P3はまだv4.0で動作します。この設定がP3用に生成されたアセンブリで目に見える効果を持つかどうか知っていますか?例えば。マニフェストには、 "特定のバージョン"がtrueに設定されているかどうかにかかわらず ".ver 2:0:0:0"と表示されます。 – Rob
はい、それは私がSebのアドバイスに従ったものです。また、起動タグの属性としてuseLegacyV2RuntimeActivationPolicy = "true"を指定する必要がありました。それ以外の場合は、処理されない例外でクラッシュしました:System.BadImageFormatException – Rob
素晴らしい。彼のリンクは私の設定を思い出させたので、彼の答えを間違いなく受け入れる。 – Randolpho