如何 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();
}
我应该使用其他方法吗?我怎样才能加载这些外部依赖项?
事实证明,是的,我可以将所有外部程序集放在带有导入注释程序集的文件夹中,并且它们已正确加载,因此我不必在我的宿主项目中引用这些外部依赖项。
问题是给我的测试项目有一些虚假的、未使用的程序集,这些程序集由于缺少依赖项而失败。 (再次提醒为什么构建服务器是您最好的朋友!)。
但是,我们正处于此开发的早期阶段,因此可能会出现此类问题。
我可以将 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();
}
我应该使用其他方法吗?我怎样才能加载这些外部依赖项?
事实证明,是的,我可以将所有外部程序集放在带有导入注释程序集的文件夹中,并且它们已正确加载,因此我不必在我的宿主项目中引用这些外部依赖项。
问题是给我的测试项目有一些虚假的、未使用的程序集,这些程序集由于缺少依赖项而失败。 (再次提醒为什么构建服务器是您最好的朋友!)。
但是,我们正处于此开发的早期阶段,因此可能会出现此类问题。