我正在尝试扫描主项目的子文件夹中的所有程序集,然后将包含的注册表添加到我的主注册表中,以便覆盖默认注册表项,必要时和依赖项注入的拦截类型。
为此我创建了以下注册表
public PluginRegistryAdder(string pluginPath)
{
Scan(x =>
{
x.AssembliesFromPath(pluginPath);
x.LookForRegistries();
});
}
我打算像这样添加到我的主容器中:
var pluginRegistries = new PluginRegistryAdder(pluginPath);
Container.Configure(_ => _.IncludeRegistry(pluginRegistries));
我现在面临的问题是,在使用AssembliesFromPath
并且我不知道如何修复它时,我收到此错误:
System.MissingMethodException:找不到方法:'Void StructureMap.Graph.IAssemblyScanner.AssembliesFromPath(System.String)'。
谷歌搜索建议我应该使用命名空间StructureMap.Graph
,但这并没有解决问题。以下是我的使用语句,其中只有StructureMap
没有被Visual Studio灰色显示(例如标记为不冗余)(我试图找到缺少的引用,但没有任何帮助):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StructureMap;
using StructureMap.Graph;
using StructureMap.Configuration.DSL;
using StructureMap.Configuration;
using StructureMap.Graph.Scanning;
using StructureMap.Util;
任何建议,我应该尝试什么?!
更新
AssembliesFromPath
注释掉该行时,解决方案运行正常,但LookForRegistries
与AssembliesFromPath
在同一类中定义。AssembliesFromApplicationBaseDirectory
给了我同样的问题。答案 0 :(得分:0)
这个问题似乎是由我的DI项目和我的主项目之间的版本不匹配引起的。经过一番尝试后,我最终在两个项目中重新安装了最新版本的StructureMap,问题就消失了。