【问题标题】:How to resolve/load external dependencies for MEF Export assemblies如何为 MEF 导出程序集解析/加载外部依赖项
【发布时间】:2015-02-16 17:17:37
【问题描述】:

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

我认为我不应该在宿主项目中引用外部依赖项,但看不到如何让这些外部依赖项解析/加载。

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

我应该使用其他方法吗?如何加载这些外部依赖项?

【问题讨论】:

  • 不将这些引用添加到项目帮助中吗?
  • 没有 Srikanath,正如我在问题中提到的,我特别不想在 Host 项目中引用这些程序集。我希望他们与他们的导出程序集一起来

标签: mef


【解决方案1】:

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

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

但是,我们正处于开发的早期阶段,因此可以预料到这样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多