1

MEF を使用してプラグイン システムを開発しています。基本的なプラグインは ( を使用してilmerge) 実行可能ファイルとマージされ、1 つの実行可能ファイルが取得されます。これらのプラグインは、AssemblyCatalog. ただし、を使用してプラグインを追加することも可能DirectoryCatalogです。

クラス ライブラリ プロジェクトはコントラクト ライブラリを参照し、MEF を使用してクラスをエクスポートします。実行可能ファイルが dll をロードしようとすると、exe に含まれているコントラクト ライブラリへの依存関係を解決できないと主張します。Contract.dll を同じディレクトリにコピーすると機能します。しかし、とにかくexeに含まれていますか?

契約書のコピーを避けるにはどうすればよいですか?

4

1 に答える 1

0

このコードを試して、ホストでライブラリを確実に公開してください

AssemblyCatalog assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
DirectoryCatalog directoryCatalog = new DirectoryCatalog(@"...");//Replace with your path

AggregateCatalog catalog =
    new AggregateCatalog(new ComposablePartCatalog[] { assemblyCatalog, directoryCatalog  }); 

CompositionContainer container = new CompositionContainer(catalog);
于 2012-08-29T17:57:04.757 に答える