无法加载插件的特定dll

本文关键字:dll 插件 加载 | 更新日期: 2023-09-27 18:27:51

我目前正在使用MEF为我的一个应用程序加载插件。我想把这些插件从bin目录移到一个单独的插件目录,这样其他应用程序就可以使用这些插件了。我遇到的一个问题是,其中一个插件依赖于单独dll中的自定义xml序列化类,当我尝试使用特定插件时,当它尝试加载单独的dll时,我会收到"无法加载文件或程序集"错误。

我的app.config当前包含以下内容:

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

为了处理这个特定的dll,我不得不添加探测,以便我的原始应用程序。所有插件dll最初都位于bin中名为"plugins"的子目录中。但现在我想把插件移到所有应用程序的公共目录中,我会着手解决这个问题吗?如有任何协助,我们将不胜感激。

无法加载插件的特定dll

您必须确保您需要的所有依赖项都在您的目录中。

它必须看起来像这样:

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;