我目前将我的程序移植到使用Prism 6,它是一个WPF应用程序。 所以我安装了Prism.Unity(6.1.1),它带有Prism.Wpf(6.1.0),Prism.Core(6.1.0),Unity(4.0.1)和CommonServiceLocator(1.3.0)。
然后我带来了那些PRISM样本,但是为了上帝的爱,我无法让它运行起来。 这是我的Bootstrapper:
public class Bootstrapper : Prism.Unity.UnityBootstrapper
{
/// <exception cref="ActivationException">If there are errors resolving the shell instance.</exception>
protected override DependencyObject CreateShell()
{
return Container.Resolve<Shell>();
}
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (Window)this.Shell;
Application.Current.MainWindow.Show();
}
protected override void ConfigureContainer()
{
base.ConfigureContainer();
this.RegisterTypeIfMissing(typeof(IWorkRepository), typeof(WorkRepository), true);
}
}
不幸的是我无法启动它。 VS 2015表示需要运行System.Runtime
return Container.Resolve<Shell>();
但是一旦添加,整个类被标记为错误。如果我直接启动它,我得到的例外是它无法加载Microsoft.Practices.ServiceLocation。 我很想知道依赖,因为几个帖子(包括ms)建议删除所有实践。*。
非常感谢帮助,因为我无法让它运行。 :(
答案 0 :(得分:1)
你使用了什么using
?
整个引导程序可以像这样简单(由Prism模板创建):
using Microsoft.Practices.Unity;
using Prism.Unity;
using PrismUnityApp2.Views;
using System.Windows;
namespace PrismUnityApp2
{
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
}
}
并且System.Runtime
不需要作为参考。可能你无意中使用了一个命名空间(而不是Microsoft.Practices.Unity
扩展名所在的Container.Resolve<>
。