1

Prism、MEF、および WPF を使用して非常に基本的なアプリケーションを作成しようとしています。Shell.xaml と Bootstrapper を含む WPF アプリケーション プロジェクトがあります。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;
    }

ソリューションには、ビューフォルダー、ビューモデルフォルダー、および2つのモジュールを持つ別のクラスライブラリがあります。2 つのモジュールは、リージョンとして使用できるように 2 つのビューに関連付けられています。botstrapper から 1 つのモジュールのみを呼び出そうとすると完全に機能しますが、両方のモジュールを呼び出すと機能しません。次のようなエラーの詳細が表示されます。

FinishModule という名前の重複モジュールがローダーによって検出されました。

両方のモジュールが異なる場合、何が問題なのかわかりません。両方のモジュールのアセンブルも変更しようとしましたが、うまくいきませんでした。

何か案は?

4

1 に答える 1

2

呼び出しを 1 つだけ使用してみてください。

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));
    }       
于 2013-07-11T09:43:59.947 に答える