ソリューション内の他のプロジェクトから共有されているファイルで主に構成されているアセンブリがあります。つまり、ソリューション全体は約 10 MB になりますが、その機能の小さなサブセットを別の 200 KB アセンブリにエクスポートします。ソリューション内のすべてのプロジェクトは、UI を除いて NUnit テスト プロジェクトにあります。
問題は、共有ファイルの 1 つにテストを追加しようとしたところ、次のエラーが発生したことです。
The type 'xxx' exists in both 'c:\path\to\project\Logic.dll'
and 'c:\path\to\project\Exported.dll'.
リフレクションを使用してアセンブリ修飾名を指定したり、エクスポートされたアセンブリ テストを別のプロジェクトに削除したりできることはわかっていますが、どちらも面倒です。コンパイル時に Logic.dll で xxx のバージョンを使用するように指定したいだけです。コンパイル時に使用する Type のバージョンを指定することは可能ですか?次のようになります。
xxx blah = new xxx();
blah.DoSomething(123);
それ以外の:
Type t = Type.GetType("Logic.xxx, Logic");
object blah = Activator.CreateInstance(t);
t.GetMethod("DoSomething").Invoke(blah, new object[] { 123 });