Проблемы с обнаружением плагинов, созданных с помощью System.Addin - PullRequest
2 голосов
/ 06 февраля 2009

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

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

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

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

Я бы предположил, что копирование всех этих библиотек вроде бы отрицательно сказывается на цели плагина.

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

Редактировать: Плагин был создан с использованием инструмента построения конвейера

Ответы [ 2 ]

1 голос
/ 30 марта 2009

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

0 голосов
/ 19 июня 2015

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

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

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

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

...