Организация нескольких составных приложений WPF для совместного использования одной оболочки
Как организовать несколько составных WPF-приложений таким образом, чтобы они совместно использовали один проект Shell, но заполняли свои каталоги модулей из разных файлов App.config?
Я пишу набор приложений, используя Руководство по составным приложениям для WPF. Функциональность каждого приложения определяется доступностью различных модулей, которые перечислены в файле App.config оболочки. Предоставляя каждому приложению отдельный App.config, я могу указать, какие модули может использовать каждое приложение.
Однако я хотел бы поделиться одним проектом Shell между всеми приложениями для общего внешнего вида. Сначала я создал решение для каждого приложения, добавил проект Shell, а затем добавил соответствующие модули. Проблема в том, что у общего проекта Shell есть только один файл App.config, и я не могу изменить его для каждого решения.
Заполнение каталога с помощью кода не устраняет эту проблему - в командной консоли по-прежнему будет код для конкретного приложения, который должен быть каким-то образом активирован с помощью используемого мной решения.
2 ответа
Что я решил сделать, так это рассматривать Shell как свой собственный модуль. Каждое приложение имеет свое собственное решение и проект, которые содержат отдельные файлы App.config. У них также есть свои собственные классы Bootstrapper. Bootstrapper в каждом приложении создает оболочку.
Помимо модулей жесткого кодирования и загрузки модулей из конфигурации, вы также можете загружать модули динамически из заданного каталога.
Поэтому, чтобы настроить разные "приложения", которые все используют одну и ту же оболочку, я бы создал пакетный файл, который копирует нужные модули для каждого приложения в отдельные папки, создавая, таким образом, разные приложения.
В документации по Composite Guidance Library больше информации о настройке вашего проекта для динамической загрузки модулей из каталога.