2010-08-06 10 views
4

J'ai besoin de mettre en œuvre une très petite architecture de plugin. Je suis nouveau dans le MEF, même les choses simples deviennent complexes. laisse supposer que j'ai 2 dll clients (Assemblée exécution) et serveur Dans serveur j'ai un dossier appelé dossier « Plugins »MEF Load Plugins (dlls) à partir du dossier n'est pas en cours d'exécution mais un autre DLL.Can vous aider?

Habituellement je crée un « Plugins » dans le répertoire bin du executingAssembly et tous les travaux avec cette pièce de code, comment puis-je le faire fonctionner si le dossier plugin est dans le serveur?

private void LoadPlugins(string folder) 
    { 
     AggregateCatalog catalog=new AggregateCatalog(); 
     catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly())); 
     catalog.Catalogs.Add(new DirectoryCatalog(folder)); 
     CompositionContainer container =new CompositionContainer(catalog); 
     container.ComposeParts(this); 
    } 

Aucune suggestion?

PS Les plug-ins ne seront utilisés que pour traiter la logique au sein du serveur, ils ne sont pas utilisés du tout par le client

+0

Vous semblez dire que vous avez un dossier de système de fichiers "Plugins" à l'intérieur d'un assemblage appelé "Serveur". Cela n'a aucun sens pour moi. On ne sait pas non plus si vous parlez d'un seul processus utilisant deux assemblages, ou de deux processus distincts qui communiquent. –

Répondre

4

Voulez-vous télécharger les plug-ins du serveur et de les utiliser dans votre application client? Si c'est le cas, vous pouvez les télécharger sur un chemin spécifique et créer le catalogue sur ce chemin. Ou vous pouvez télécharger chaque assembly, le charger avec Assembly.Load() ou une méthode similaire et créer un AssemblyCatalog dessus.

+0

Non Les plugins ne seront utilisés que pour traiter la logique dans le serveur, ils ne sont pas du tout utilisés par le client. N'importe quel extrait serait très apprécié comme nouveau à mef.Merci pour votre temps – user9969

+0

@ devnet247 OK, quel type de serveur est-ce? ASP.NET? –

+0

Daniel.J'apprécie vraiment votre aide car j'ai besoin de l'avoir fait par lundi. Ce n'est pas asp.net. Pas sûr si pertinent du tout cependant. Client c'est WPF et les plugins seront sur une autre DLL où nous gardons la logique métier et l'accès aux données. Le problème principal est à moins que les plugins se trouvent sur un répertoire dans l'assembly exécutant (Client) il semble qu'il n'y ait aucun moyen de le faire. J'ai besoin de la possibilité de placer les plugins dans un dossier et de le ramasser. merci – user9969