从MEF插件加载行为扩展

时间:2016-10-28 03:31:28

标签: wcf mef

我真的希望有人能为我的问题提供一些意见。

 MyApplication.exe
      |
      |
      |-Plugins (Folder)
           |
           |- Plugin1 (Folder)
           |     |
           |     |- MyPluginAssembly1.dll
                 |- MyPluginAssembly.AppConfig
           |
           |- Plugin2 (Folder)
                 |
                 |- MyPluginAssembly1.dll
                 |- Assembly1.dll
                 |- Assembly2.dll

我试图访问的插件是带有配置文件的Plugin1。 插件连接到另一个与MainApplication无关的应用程序的WCF服务。

配置文件包含以下内容

 <extensions>
      <behaviorExtensions>
       <add name="Version" type="SomeApplicaiton.MyClientBehaviorExtensionElement, Some-Application.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </behaviorExtensions>

    </extensions>

Plugin1有一些wcf服务需要连接才能加载。问题是,如果行为扩展程序集位于plugins文件夹中,它将无法工作。加载插件的.exe无法加载程序集,除非它们已注册或驻留在exe文件夹中。 在我的开发中,这非常有效。但是当访问插件时,它会给我一个错误,即无法加载Version,MyClientBehaviorExtensionElement行为扩展。

我无法控制exe。有没有办法我可以加载此扩展而不是将DLL放在exe文件夹

1 个答案:

答案 0 :(得分:0)

AppDomain.CurrentDomain.AssemblyResolve += (sndr, resolveEventArgs) =>
{
    return Assembly.LoadFile(....._
}