WPF Prism - управление модулями в приложении

Используя Prism с WPF, я хочу позволить пользователям выбирать из репозитория, какие модули они хотели бы использовать. Каждый модуль по сути является надстройкой, и выбор используемого модуля просто переместит его в папку «Модули» DLL для загрузки.

Но при попытке переместить библиотеки DLL во время работы приложения выдается ошибка, потому что библиотеки DLL используются в данный момент. Как вы можете обойти это и позволить пользователям добавлять / удалять модули по желанию?

 TrialAndError18 окт. 2012 г., 17:12
Я использую Unity и загружаю динамически из папки в это время успешно. Многие люди говорят, что только MEF может сделать это, что неправильно, по крайней мере, что касается обнаружения модулей. Я думаю, более конкретно, я смотрю, чтобы посмотреть, смогу ли я выгрузить модуль во время выполнения (чтобы можно было обновлять / удалять DLL). Возможно ли это с помощью MEF вместо Unity?
 TrialAndError24 окт. 2012 г., 23:33
Это имеет смысл. Спасибо за ваш вклад. Я думаю, что нашел способ обойти это, по крайней мере, для того, чтобы позволить пользователям «добавлять / удалять» модули. Я просто добавляю опцию «Настроить модули» на экране входа в систему, который запускается перед загрузчиком. Это позволит копировать / удалять модули из папки по мере необходимости до их загрузки. Кроме того, вы хотите добавить это в ответ, чтобы я мог пометить его как ответ?
 Colin Smith18 окт. 2012 г., 22:15
Как только сборка загружается в домен приложений, она не выгружается до тех пор, пока домен приложений не будет разрушен .... Я думаю, это ваша проблема. Есть некоторые методы, чтобы обойти это, если вы посмотрите в сети ... например. создание дополнительного домена приложений, который затем можно отключить ... но затем необходимо выполнить маршаллизацию вызовов между доменами приложений с помощью MarshalByRef.stackoverflow.com/questions/6578170/...
 Colin Smith17 окт. 2012 г., 14:22
Используете ли вы Unity или MEF. Вам нужно использовать MEF, чтобы позволить модулям загружаться динамически.danielvg.dk/post/2010/02/13/Unity-vs-MEF-vs-PRISM.aspx ....forums.silverlight.net/t/227834.aspx/1

Ответы на вопрос(1)

Решение Вопроса

AppDomainне выгружается (не может) доAppDomain снесены .... Я думаю, это ваша проблема.

Есть некоторые методы, чтобы обойти это, если вы посмотрите в сети .....

Создать дополнительный домен приложения

Создать дополнительныйAppDomain который вы можете загрузить свою сборку в .... когда вы закончите, просто позвонитеUnload закрытьAppDomain и это выпустит сборку.

Однако типы, которые вы хотите быть доступными из другихAppDomains должны происходить изMarshalByRefObject так что ваш объект является удаленным .... и вызовы из других доменов приложений могут быть распределены.

Использование AppDomain в C # для динамической загрузки и выгрузки DLLЗагрузить сборку в MemoryStream

Очень интересная техника здесь .... она загружает сборку вMemoryStream сначала он получает .NET для загрузки сборки изMemoryStream... это означает, что "файл" на диске не заблокирован.

http://social.msdn.microsoft.com/Forums/en-US/clr/thread/093c3606-e68e-46f4-98a1-f2396d3f88ca/

Как внедрить плагины .net без использования доменов приложений?

Ваш ответ на вопрос