Можно ли загрузить разные версии одной и той же сборки с помощью MEF?

У меня есть ситуация, когда одна и та же сборка (допустим Common.dll) включена в 2 разных модуля (Xaps). Под одной и той же сборкой я подразумеваю сборку, имеющую одинаковые пространства имен и классы, но разные реализации классов/операций.

Теперь оба этих модуля будут помещены в одно приложение-оболочку, а их соответствующие xap-файлы будут загружены через каталог загрузок. Оба xaps будут содержать Common.dll, но с разными реализациями.

Я пытался использовать разные CompositionContainers, по одному для модулей, надеясь, что отдельные контейнеры изолируют модули и их зависимости. Не сработало. Удивительно, но он использовал первый загруженный экземпляр Common.dll. Это отличается от того, что обычно одна и та же сборка перезаписывает первую и использует последнюю загруженную сборку, что дает мне надежду.

Контейнер композиции имеет возможность ReleaseExports. Поможет ли это мне?

Концептуально я думаю, что если мы последовательно удовлетворим импорты, а затем выпустим, каждый модуль должен получить экземпляр правильных операций Common.dll.

Спасибо !


person Abhinav Gujjar    schedule 10.02.2011    source источник


Ответы (1)


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

person Wim Coenen    schedule 11.02.2011