2013-07-10 113 views
1

找到名稱爲{0}的重複模塊我正在嘗試使用Prism,MEF和WPF創建一個非常基本的應用程序。我有一個WPF應用程序項目,它有一個Shell.xaml和引導程序。規範引導程序如下:問題與MEF和棱鏡:裝載機

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; 
    } 

在上述方案中,我有其中有一個文件夾視圖,視圖模型文件夾和兩個模塊的另一個類庫。這兩個模塊綁定到兩個視圖,以便它們可以用作區域。如果我嘗試從botstrapper只調用一個模塊,但不是在調用這兩個模塊時,它完美地工作。它給了我錯誤的詳細信息,如:

加載程序找到名爲FinishModule的重複模塊。

我不明白如果兩個模塊都有不同,那麼問題是什麼。我試着改變組裝也爲兩個模塊,但沒有運氣。

任何想法?

回答

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)); 
    }  
+0

我是不認爲,但如果兩個模塊與不同的名字都在同一總成那麼我們應該調用只有一個太傻?是嗎?因爲它在任何情況下都有效。 – user728630

+0

它是你需要的組件,所以取決於你的模塊最終駐留在哪裏 – davidcarr