0

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

为此,我创建了以下注册表

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)'。

谷歌搜索建议我应该使用 namespace StructureMap.Graph,但这并没有解决问题。这是我的 using 语句,其中只有StructureMapVisual 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,解决方案运行得很好,尽管LookForRegistries它与AssembliesFromPath.
  2. AssembliesFromApplicationBaseDirectory给我同样的问题。
4

1 回答 1

0

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

于 2016-10-13T16:08:27.590 回答