2

在我的应用程序中,我有一个直接从 shell 引用的模块(就在我开始工作的时候)。

IE

protected override void ConfigureAggregateCatalog()
    {
        base.ConfigureAggregateCatalog();

        AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Bootstrapper).Assembly));            
        AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(MyModule).Assembly));
    }

在我的模块中,当我一直在为视图调用 SatisfyImportsOnce 时,这已经奏效,我可以看到正在创建的视图模型等。

但是,我现在已经更改了我的引导程序,以便为我的模块使用 directoryCatalog。我添加了一些构建后事件来将我的模块程序集、pdb 等复制到 shell。

所以现在我的引导程序中有以下内容

protected override void ConfigureAggregateCatalog()
    {
        base.ConfigureAggregateCatalog();

        AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Bootstrapper).Assembly));

        // add the directory catalog for the modules
        AggregateCatalog.Catalogs.Add(new DirectoryCatalog("Modules"));
    }

我现在可以运行我的应用程序并查看我的模块中的视图,但是以前可以工作的 SatisfyImportsOnce 现在似乎什么也没做。我看不到任何错误。既然我正在使用目录目录,我的导入/导出是否需要不同的属性?

谢谢。

4

1 回答 1

0

不,您需要使用的属性应该没有任何区别。

很难说哪里出了问题,这里有一篇关于一般MEF 调试的博文。

于 2011-04-07T02:05:39.607 回答