私は以下の問題があります。
私は1つの解決策で2つのプロジェクトを持っています。 Core.prj
およびExtension.prj
。
Core.prj
は、名前がprofile.dll
(v1)のdllを参照し、Extension.prj
は同じ名前と同じ名前空間を持つが、異なるバージョンのprofile.dll
(v2)を持つdllを参照します。 Extension.prj
もCore.prj
プロジェクトを参照してください。
Core.prj
にはソースファイルがあります。 A.cs
にいくつかの仮想メソッドが定義されています。 Extension.prj
にはソースファイルがあります。 B.cs
A.cs
に定義された仮想メソッドをオーバーライドするメソッドがいくつかあります。Core.prj
です。exeとdllは同じ名前と同じ名前空間を持つDLLを参照しています
私の考えは、Extension.prj
をビルドして実行し、の仮想メソッドをB.cs
の優先メソッドから呼び出すことでした。さて、B.cs
のメソッドはprofile.dll
(V1)からタイプを使用することになりA.cs
にprofile.dll
(V2)とメソッドからタイプを使用しますが、これは仮想profile.dll
(V2)からA.cs
使用タイプからメソッドではなくprofile.dll
から(V1ので、可能ではありません)。
同じ名前と名前空間を持つdllの異なるバージョンを参照するこの考えは、とにかく実行可能なexeとdllからですか?
私は、あなたはおそらく、あなたの理由を持って知っているが、実行時に同じライブラリの異なるバージョンを使用すると、あなたはすべてのコストで避けたい悪夢です。環境内で利用可能な同じライブラリの異なるバージョンを確かに使用でき、アセンブリリダイレクトを使用してアプリケーションが使用するバージョンを「アップグレード」するだけですが、これは一般的にソリューション全体であり、ソリューション内では適用されません。 –