Можем ли мы иметь один .exe, вызывающий .dll с XAML и Prism (для MVVM)? - PullRequest
0 голосов
/ 28 марта 2019

У меня такой вопрос: как я могу вызвать библиотечный проект (DLL), который содержит все мои классы XAML (Views) и ViewModel из другого проекта, который должен работать только как «EXE»?(Я хочу использовать Prism 7 для целей MVVM).

Мое намерение состоит в том, чтобы иметь один проект, единственной целью которого является создание .EXE.Этот EXE-файл загрузит сборку, в которой находятся действительные представления WPF и модели представления.

В идеале, я хотел бы иметь App.xaml в проекте EXE ... Но я хочу, чтобы мой Bootstrapper был в сборкепроект ... Это возможно с Prism 7?

Я хочу иметь App.xaml в проекте "Company.Product.Application" (который создает EXE):

         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:Company.Product.Application"
         xmlns:Presentation="clr-namespace:Company.Product.Presentation;assembly=Product.Presentation"
         DispatcherUnhandledException="Application_DispatcherUnhandledException"
         xmlns:prism="http://prismlibrary.com/">
<Application.Resources>
        <ResourceDictionary>
            <Presentation:AppBootstrapper x:Key="Bootstrapper" />
        </ResourceDictionary>
</Application.Resources>

Затем из моего Bootstrapper я хочу загрузить свой IoC и создать свои представления и модели представления.

Мне удалось сделать это с помощью Caliburn.Micro ... Идея заключается в том, что "DLL-файл Company.Product.Presentation "может быть протестирована без необходимости создания EXE-файла.Я мог бы добавить ссылку на «Презентацию» в моем тестовом проекте (NUnit) и протестировать ее самостоятельно.EXE - это всего лишь проект, который вызывает DLL-файл «Company.Product.Presentation» для фактического создания графического пользовательского интерфейса.

Я ценю любые ваши соображения по этому вопросу.Спасибо!

1 Ответ

0 голосов
/ 28 марта 2019

Но я хочу, чтобы мой Bootstrapper был в проекте Assembly ... Возможно ли это с Prism 7?

Конечно, просто укажите dll с помощью загрузчика из exe и вставьте что-то вроде этого в App.xaml.cs:

protected override void Onstartup(StartupEventArgs e)
{
    base.OnStartup(e);
    var bootstrapper = new Company.Product.Presentation.Bootstrapper();
    bootstrapper.Run();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...