2009-02-06 22 views
2

J'utilise System.Addin pour créer des plugins pour une petite partie de mon application. J'ai deux plugins différents pour le moment, et ils sont tous les deux détectés et initialisés correctement. Je peux même copier & coller les dossiers de plugin qui sont créés et je les verrai apparaître aussi bien.Problèmes détectant les plugins avec System.Addin

Tout fonctionne très bien lorsque je joue dans les dossiers de débogage et de libération. Le problème vient quand je tente de déposer l'un des plugins dans le dossier plugin où l'application est installée. Les plugins copiés ne sont jamais détectés, même si rien n'a changé dans le contrat, les vues ou les adaptateurs.

J'ai essayé de copier et coller des plugins à partir d'une autre version installée du logiciel (dans laquelle le contrat est toujours identique).

J'ai trouvé que la seule façon de faire ce travail est de copier tous les dossiers relatifs à l'architecture de plug-in: AddIns AddInSideAdapters AddInViews Contrats HostSideAdapters HostView.dll

I Je suppose que la copie de toutes ces DLL détruit le but d'un plugin.

Est-ce que quelqu'un d'autre a eu ces problèmes avec le nouveau System.AddIn?

Edit: Plugin a été créée en utilisant l'outil de construction de pipeline

Répondre

1

Avez-vous essayé d'analyser le cache de magasin Addin? Peut-être que c'est la source du problème. Jetez un oeil here pour une méthodes disponibles.

0

MAF est très sensible aux versions DLL des assemblages HostView, Contract et AddInView. Un AddIn qui référence une version DLL particulière de l'interface AddInView voudra toujours cette version exacte. De même, AddInAdapter doit référencer la même version DLL de AddInView. Si vous générez un nouvel AddIn, il doit être lié à la DLL de la même version que celle à laquelle AddInAdapter est lié. Pour notre implémentation, je m'assure que les DLL HostView, Contract et AddInView sont empaquetées dans des nugets individuels et que ces projets VS ne font pas partie de la même solution que mes AddIns ou Adapters. Ensuite, dans le packages.config de la carte d 'extension, AddInAdapter et AddIns individuels, je fais que nous utilisons l'attribut allowedVersions sur l'élément package:

<package id="AddInPipelineSegments.AddInViews.AddinViewV1" 
     version="139.37.8.1011" 
     allowedVersions="[139.37.8.1011]" 
     targetFramework="net451" /> 

Cela garantit qu'il n'y a pas de mises à niveau NuGet accidentelles qui changeraient la version.