MEF и совместимость версий - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблема с совместимостью MEF и версии

Шаги:

Я создал три проекта:

  • Проект интерфейса (с одним интерфейсом A , который обязывает меня иметь один метод void)
  • Экспорт проекта (реализует интерфейс A и реализацию функции, которая записывает «Hello world» в консоль)
  • Импорт проекта (Импортирует интерфейс A )

Итак, что я делаю:

  • Скомпилируйте мой Экспорт проекта и поместите файл export.dll в папку, которую я буду использовать в проекте импорта
  • Установите мой интерфейс (InterfaceProject.dll) в GAC.(версия 1.1.0.0) (для сохранения версий)
  • Запустите мой проект импорта

    • , если я не изменю версию сборки моего проекта интерфейса (что мой импортпроект использует) все работает
    • , если я увеличиваю версию сборки моего проекта интерфейса, все вылетает, и я получаю сообщение ((ContractName = "MyImportProject.IMyInterface") "нельзя назначить типу" MyImportProject.IMyInterface ")

Почему это происходит и как с этим бороться?

1 Ответ

0 голосов
/ 05 октября 2018

Полезно подписать интерфейсную сборку, потому что тогда MEF загружает его только один раз, в первый раз, что будет вашим запуском приложения.

Кроме того, не повышайте версию, если не повышаете для всех.

...