C# 无法加载插件的特定dll

C# 无法加载插件的特定dll,c#,plugins,mef,C#,Plugins,Mef,我目前正在使用MEF为我的一个应用程序加载插件。我想将这些插件从bin目录移到一个单独的插件目录,以便其他应用程序可以使用这些插件。我遇到的一个问题是,其中一个插件依赖于单独dll中的自定义xml序列化类,当我尝试使用特定插件时,当它尝试加载单独的dll时,会出现“无法加载文件或程序集”错误 My app.config当前包含以下内容: <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"&g

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

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

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


为了使用这个特定的dll,我必须按照我的原始应用程序的顺序添加探测。所有插件DLL最初都位于bin中名为“plugins”的子目录中。但是现在我想将插件移动到所有应用程序的公共目录中,我会着手解决这个问题吗?非常感谢您的帮助。

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

至少它必须看起来像这样:

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;
var catalog=newaggregateCatalog();
catalog.Catalogs.Add(新的AssemblyCatalog(Assembly.getExecutionGassembly());
catalog.Catalogs.Add(新目录目录(AppDomain.CurrentDomain.BaseDirectory))//插件dll所需的依赖项
catalog.Catalogs.Add(新目录目录(@“YourPluginFolderPath\Plugins\”)//你的插件dll
var cc=新的合成容器(目录);
var t=cc.GetExport().Value;

将自定义xml序列化类/插件移动到GAC对您来说是可行的解决方案吗?不幸的是,我不能这样做。这很奇怪,我也在使用MEF;我可以把依赖项放在plugins目录中,它就可以工作了。你用的是什么目录?我想你应该在任何情况下都可以使用ILMerge来加入dll,请告诉我你是如何为你的compositioncontainer设置目录的