MEF和Prism问题:Loader找到了名为{0}的重复模块

时间:2013-07-10 12:26:09

标签: wpf prism mef

我正在尝试使用Prism,MEF和WPF创建一个非常基本的应用程序。我有一个WPF应用程序项目,它有一个Shell.xaml和Bootstrapper。 BootStrapper的代码如下:

public class SimpleMefApplicationBootstrapper : MefBootstrapper
{
    protected override void ConfigureAggregateCatalog()
    {
        //base.ConfigureAggregateCatalog();
        this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(SimpleMefApplicationBootstrapper).Assembly));             
        this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(PrismApp.Module.Hello.HelloModule).Assembly));
        this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(PrismApp.Module.Hello.FinishModule).Assembly));
    }        

    protected override DependencyObject CreateShell()
    {
        return this.Container.GetExportedValue<Shell>();
    }

    protected override void InitializeShell()
    {
        //base.InitializeShell();
        Application.Current.MainWindow = (Window)this.Shell;
    }

    protected override IRegionBehaviorFactory ConfigureDefaultRegionBehaviors()
    {
        var factory = base.ConfigureDefaultRegionBehaviors();           

        return factory;
    }

在解决方案中我有另一个类库,它有一个View文件夹,View model Folder和两个模块。这两个模块绑定到两个视图,以便它们可以用作区域。如果我尝试从botstrapper只调用一个模块但是当我同时调用这两个模块时,它可以正常工作。它给了我错误的详细信息,如:

Loader找到了一个名为FinishModule的重复模块。

我不明白两个模块是否有不同然后是什么问题。我也尝试为两个模块更换组合但没有运气。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

尝试只使用一个电话:

public class SimpleMefApplicationBootstrapper : MefBootstrapper
{
    protected override void ConfigureAggregateCatalog()
    {
        //base.ConfigureAggregateCatalog();
        this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(SimpleMefApplicationBootstrapper).Assembly));   

        this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(PrismApp.Module.Hello.HelloModule).Assembly));
      //  this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(PrismApp.Module.Hello.FinishModule).Assembly));
    }