我的问题是:我如何才能从另一个仅以“ EXE”运行的项目中调用包含我所有XAML(视图)和ViewModel类的库项目(DLL)? (我想将Prism 7用于MVVM)。
我的意图是拥有一个项目,其唯一目的是创建一个.EXE。该EXE将加载实际WPF视图和视图模型所在的程序集。
理想情况下,我想在EXE项目中使用App.xaml ...但是我想在组装项目中使用Bootstrapper ... Prism 7可以吗?
我想在“ Company.Product.Application”项目(产生一个EXE)中拥有一个App.xaml:
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完成此任务。这里的想法是,可以测试“ Company.Product.Presentation” DLL,而无需自己创建EXE。我可以在测试项目(NUnit)中添加对“演示文稿”的引用,并对其进行独立测试。 EXE只是一个项目,它调用“ Company.Product.Presentation” DLL来实际生成图形用户界面。
非常感谢您对这个问题有任何见解。谢谢!
答案 0 :(得分:0)
但是我想将我的Bootstrapper放在Assembly项目中... Prism 7可以吗?
当然,只需使用exe中的引导程序引用dll,然后在App.xaml.cs
中放入类似内容:
protected override void Onstartup(StartupEventArgs e)
{
base.OnStartup(e);
var bootstrapper = new Company.Product.Presentation.Bootstrapper();
bootstrapper.Run();
}