Невозможно загрузить определенную DLL для плагина - PullRequest
1 голос
/ 13 марта 2012

В настоящее время я использую MEF для загрузки плагинов для одного из моих приложений. Я хочу переместить эти плагины за пределы каталога bin в отдельный каталог плагинов, чтобы другие приложения могли использовать плагины. Проблема, с которой я сталкиваюсь, заключается в том, что один из плагинов зависит от пользовательского класса сериализации xml в отдельной dll, и когда я пытаюсь использовать конкретный плагин, я получаю ошибку «Не удалось загрузить файл или сборку», когда он пытается загрузить отдельную DLL.

Мой app.config в настоящее время имеет следующее:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <probing privatePath="plugins"/>
  </assemblyBinding>
</runtime>

Мне пришлось добавить зондирование в порядке моего исходного приложения для работы с этой конкретной DLL. Все библиотеки плагинов изначально находились в подкаталоге внутри корзины, называемом «плагинами» Но теперь, когда я хочу переместить плагины в общий каталог для всех приложений, я бы решил исправить эту проблему? Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 16 марта 2012

Вы должны убедиться, что все необходимые зависимости находятся в ваших каталогах.

на нем должно выглядеть примерно так:

var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
catalog.Catalogs.Add(new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));//dependencies your plugin dll needs
catalog.Catalogs.Add(new DirectoryCatalog(@"YourPluginFolderPath\Plugins\"));//your plugin dll's

 var cc = new CompositionContainer(catalog);
 var t = cc.GetExport<IMyPluginTestStuffExport>().Value;
...