我得到了以下app.xml:
<Application
x:Class="WeDoneIt.WP2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WeDoneIt.WP2"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
<Application.Resources>
<local:Bootstrapper x:Key="bootstrapper" />
</Application.Resources>
</Application>
引导程序:
namespace WeDoneIt.WP2
{
public class Bootstrapper : Caliburn.Micro.Autofac.AutofacBootstrapper
{
public Bootstrapper()
{
Instance = this;
}
protected static Bootstrapper Instance { get; private set; }
protected override void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterType<ShellViewModel>();
builder.RegisterType<ItemViewModel>();
base.ConfigureContainer(builder);
}
public static T ResolveModel<T>() where T : INotifyPropertyChangedEx
{
return (T)Instance.GetInstance(typeof (T), null);
}
}
}
为什么它找不到它?
您的问题是由Caliburn.Micro.Autofac
包引起的。它表示需要Autofac (>= 2.6.1.841)
,因此Nuget将下载满足这一要求的最新版本,即当前的Autofac (2.6.3.862)
。但是Caliburn.Micro.Autofac
程序集是根据Autofac版本2.6.1.841
构建的,因此它找不到所需的Autofac dll,并且由于这个神秘的异常而导致构建失败。
解决方法:删除所有Autofac和Caliburn相关的软件包,并按以下方式安装:
PM> Install-Package Caliburn.Micro
Successfully installed 'Caliburn.Micro 1.3.1'.
PM> Install-Package Autofac -Version 2.6.1.841
Successfully installed 'Autofac 2.6.1.841'.
PM> Install-Package Caliburn.Micro.Autofac -IgnoreDependencies
Successfully installed 'Caliburn.Micro.Autofac 1.4.1'.
我是怎么想的:我创建了一个repro项目并安装了Caliburn.Micro.Autofac
软件包,复制了你的代码,我看到了错误消息。然后,我删除了app.xaml的引导程序init,并在后面的代码中在应用程序的构造函数中添加了一行var bootstrapper = new Bootstrapper();
。然后,我打开了VS中所有异常的中断复选框,在new Bootstrapper()
行上有一个TargetInvocationException
,内部异常:无法加载Autofac dll版本。。。。