我可以将MEF程序集导入我的宿主应用程序。但是,当Imported程序集具有其他依赖项时,例如其他外部程序集,我得到一个ReflectionTypeLoadException。
我认为我不应该在我的主机项目中引用外部依赖项,但无法看到如何获取这些外部依赖项来解析/加载。
使用DirectoryCatalog检索Imports,其中我有Import-annotated程序集。我已经尝试将外部依赖项程序集添加到文件夹中,但这似乎并没有让我任何地方。这是代码:
var catalog = new DirectoryCatalog(assemblyLocation);
var container = new CompositionContainer(catalog);
var pluginRepo = new PluginRepository()
{
TestAdaptors = container.GetExportedValues<ITestAdaptor>()
};
foreach (var testAdaptor in pluginRepo.TestAdaptors)
{
testAdaptor.Execute();
}
我应该使用不同的方法吗?如何加载这些外部依赖项?
答案 0 :(得分:0)
事实证明,是的,我可以将所有外部程序集放在带有Import-annotated程序集的文件夹中,并且它们已正确加载,因此我不必在宿主项目中引用这些外部依赖项。
问题是我给出的测试项目有一些虚假的,未使用的程序集,由于缺少依赖项而失败。 (还有一个提醒,为什么构建服务器是你最好的朋友!)。
但是,我们处于发展的早期阶段,因此可以预期这样的问题。