MEF在添加元数据后未加载DLL

时间:2014-02-04 19:59:51

标签: c# mef

将元数据添加到我的MEF导出后,我的一个DLL将不再加载,而另一个则不会。我声明我的变量是这样的:

    [ImportMany]
    private IEnumerable<Lazy<IOOOContract, IOOOContractMetaData>> plugins;

我定义了我的元数据界面:

    public interface IOOOContractMetaData {
        string name { get; }
    }

要加载我刚才使用的代码,我认为这是标准方式:

        var catalog = new AggregateCatalog();
        catalog.Catalogs.Add(new DirectoryCatalog(@"...."));

        var container = new CompositionContainer(catalog);
        container.ComposeParts(this);

我想加载的插件只是一个类库,如下所示:

[Export(typeof(IOOOContract))]
[ExportMetadata("name", "TMRAT")]
public class Class1 : IOOOContract

如果我对目录运行mefx.exe,我会看到每个DLL正确列出IOOOContract,如果我使用/ rejected标志,它们都没有显示任何输出。我能想到的唯一可能影响它的是没有加载的DLL引用了另一个不属于GAC的DLL。我尝试将该DLL复制到DirectoryCatalog()上列出的同一目录,但这没有什么区别。

0 个答案:

没有答案
相关问题