2009-02-06 2 views
2

Я использую System.Addin для создания плагинов для небольшой части моего приложения. На данный момент у меня есть два разных плагина, и они оба обнаружены и инициализированы правильно. Я даже могу скопировать & вставить созданные папки плагинов, и я также увижу их.Проблемы с обнаружением плагинов, сделанных с помощью System.Addin

Все работает отлично, когда я играю в папках отладки и выпуска. Проблема возникает, когда я пытаюсь удалить один из плагинов в папку плагина, где установлено приложение. Скопированные плагины никогда не обнаруживаются, хотя в контракте, представлениях или адаптерах ничего не изменилось.

Я пробовал копировать и вставлять плагины из другой установленной версии программного обеспечения (в которой договор по-прежнему идентичен).

Я обнаружил, что единственный способ сделать эту работу, чтобы скопировать все папки, относящиеся к архитектуре плагинов: надстройках AddInSideAdapters AddInViews Контракты HostSideAdapters HostView.dll

I предположил бы, что копирование по всем этим dll-файлам поражает цель плагина.

У кого-нибудь еще были проблемы с новым System.AddIn?

Edit: Плагин был создан с помощью Компоновщика трубопровода

ответ

1

Вы пытались анализировать кэш Аддин магазина? Возможно, это и есть источник проблемы. Посмотрите here на наличие доступных методов.

0

MAF очень чувствителен к DLL-версиям сборок HostView, Contract и AddInView. AddIn, который ссылается на определенную DLL-версию интерфейса AddInView, всегда будет нуждаться в этой точной версии. Аналогично, AddInAdapter должен ссылаться на ту же DLL-версию AddInView. Если вы создаете новый AddIn, он должен ссылаться на ту же DLL той же версии, с которой связан AddInAdapter.

Для нашей реализации я гарантирую, что DLL HostView, Contract и AddInView упакованы в отдельные nugets и что эти проекты VS не являются частью того же решения, что и мои AddIns или Adapters. Тогда в packages.config из HostAdapter, AddInAdapter и индивидуальные AddIns, я убедиться, что мы используем атрибут allowedVersions на package элемента:

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

Это гарантирует, что нет случайных обновлений NuGet, что бы изменить версию. .

Смежные вопросы