XML命名空间'clr-namespace:XXX'中不存在标记'Bootstrapper'。

4
我得到了以下的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);
        }
    }
}

Why can it not find it?


它被标记为wpf,但我看到了Microsoft.Phone名称空间...所以你使用的是WPF还是WP7,因为引导程序不同请参见。否则,你的代码看起来很好,能否发布完整的堆栈跟踪?你的“WeDoneIt.WP2.App”和“Bootstrapper”在同一个程序集中吗? - nemesv
已修复标签,而且它们在同一个程序集中。 - jgauffin
1个回答

6
你的问题由于 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'.

我是如何解决的:我创建了一个重现项目,并安装了Caliburn.Micro.Autofac包,复制了您的代码,发现了错误消息。然后我删除了app.xaml中的bootstrapper init,并在代码后台的App构造函数中添加了var bootstrapper = new Bootstrapper();行。接着我打开了VS中的所有异常断点复选框,然后在new Bootstrapper()这一行上遇到了TargetInvocationException,并且内部异常是:无法加载Autofac dll版本....

谢谢。我认为就是这样,因为当我删除了“ConfigureContainer”重载时,我注意到一切都编译得很好。 - jgauffin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接