如何 resolve/load MEF 导出程序集的外部依赖项

How to resolve/load external dependencies for MEF Export assemblies

我可以将 MEF 程序集导入到我的主机应用程序中。但是,当 Imported 程序集具有其他依赖项时,例如其他外部程序集,我得到一个 ReflectionTypeLoadException。

我认为我不必在我的宿主项目中引用外部依赖项,但看不到如何将这些外部依赖项获取到 resolve/load。

导入是使用 DirectoryCatalog 检索的,其中我有导入注释的程序集。我也尝试过将外部依赖程序集添加到文件夹中,但这似乎无济于事。这是代码:

 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();
            }

我应该使用其他方法吗?我怎样才能加载这些外部依赖项?

事实证明,是的,我可以将所有外部程序集放在带有导入注释程序集的文件夹中,并且它们已正确加载,因此我不必在我的宿主项目中引用这些外部依赖项。

问题是给我的测试项目有一些虚假的、未使用的程序集,这些程序集由于缺少依赖项而失败。 (再次提醒为什么构建服务器是您最好的朋友!)。

但是,我们正处于此开发的早期阶段,因此可能会出现此类问题。