2016-10-28 2 views
0

J'espère vraiment que quelqu'un aura une idée de mon problème.Charger une extension de comportement à partir du plugin MEF

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

Le plugin auquel j'essaie d'accéder est Plugin1 avec un fichier de configuration. Le plug-in se connecte à certains services WCF pour une autre application qui n'est pas liée à MainApplication.

Le fichier de configuration a le

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

    </extensions> 

plugin1 qui a des services WCF dont il a besoin pour se connecter afinde à la charge. Le problème est que cela ne fonctionnera pas si les assemblys d'extension de comportement se trouvent dans le dossier plugins. Le fichier .exe qui charge le plugin ne peut pas charger les assemblys sauf s'ils sont enregistrés ou résident dans le dossier exe. Sur mon développement cela fonctionne parfaitement. Mais lorsque le plugin est accédé, il me donne une erreur que l'extension de comportement Version, MyClientBehaviorExtensionElement ne peut pas être chargée.

Je n'ai aucun contrôle sur l'exe. Est-il possible de charger cette extension au lieu de mettre la DLL dans le dossier exe

Répondre

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