使用StructureMap中的AssembliesFromPath抛出MissingMethodException

时间:2016-10-13 15:14:39

标签: c# .net structuremap structuremap4

我正在尝试扫描主项目的子文件夹中的所有程序集,然后将包含的注册表添加到我的主注册表中,以便覆盖默认注册表项,必要时和依赖项注入的拦截类型。

为此我创建了以下注册表

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;

任何建议,我应该尝试什么?!

更新

  1. 请注意,当我仅使用AssembliesFromPath注释掉该行时,解决方案运行正常,但LookForRegistriesAssembliesFromPath在同一类中定义。
  2. AssembliesFromApplicationBaseDirectory给了我同样的问题。

1 个答案:

答案 0 :(得分:0)

这个问题似乎是由我的DI项目和我的主项目之间的版本不匹配引起的。经过一番尝试后,我最终在两个项目中重新安装了最新版本的StructureMap,问题就消失了。