2014-11-28 2 views
0

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

Я построил образец решения, которое имитирует способ, которым мне нужно реализовать это в текущем программном обеспечении, которое мы пытаемся выполнить. На данный момент это включает EXE, который в основном загружает некоторые параметры, класс Core и класс Wrapper, которые обрабатывают загрузку домена приложения, загрузку окна оболочки и открытие модуля (The Core создает новый домен приложения и загружает в него экземпляр Wrapper в то время как Wrapper обнаруживает модули и создает экземпляр оболочки), и, наконец, сама оболочка, которая отвечает за отображение оболочки и модулей загрузки по требованию.

Проблема, с которой я столкнулся, когда класс Wrapper загружен в новый домен приложения, все работает без исключения, но модуль никогда не отображается (копание далее показывает, что представление никогда не добавляется в область просмотра, очевидно потому что viewregion никогда не добавляется в Регионы в RegionManager). Все работает нормально, если я создаю Wrapper в исходном домене приложений.

Я пытаюсь понять, почему это происходит, и если есть обход. Я знаю, что процесс кажется сложным, но это метод, который мы снимаем по разным причинам. Любая помощь в том, почему у меня возникают проблемы с ViewRegion и доменом приложений, будет очень признательна. Вот ссылка на решение: https://gist.github.com/fb8f989f42ceb3f4ee56.git

+0

Является ли это трудный вопрос, чтобы обратиться или это просто плохо формируется вопрос? –

ответ

0

Во-первых, похоже, что мой код для этого вопроса больше не существует на Git. У меня есть примерное решение, с которым я мог бы поделиться, если кому-то это нужно.

Проблема связана с тем, что объект DependencyObject, назначенный как ViewRegion, никогда не создается. Внутри RegionManager объект DependecyObject проверяется на предмет того, находится ли он в DesignMode, который вызывает CreateRegion для вызова, если он возвращает true. Вот еще один вопрос, ответ на который помогает объяснить проблему и исправить ее.

How to use Prisim within an ElementHost