将元数据添加到我的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()上列出的同一目录,但这没有什么区别。