我正在开发一个应用程序,我们使用StructureMap 2.5.4扫描如下目录。
ObjectFactory.Configure(scanner => scanner.Scan(x =>
{
x.AssembliesFromPath(settings.Directory);
x.AddAllTypesOf(typeof(IScannerConvention)).NameBy(n => n.Name);
}));
由于某种原因,未注册实施IScannerConvention的类型。如果我们将AddAllTypesOf更改为typeof(object),我们可以看到我们要查找的类型是在容器中注册的,但这显然不是我们想要做的。我们还尝试将包含实现IScannerConvention的类型的程序集移动到应用程序基目录并使用x.AssembliesFromApplicationBaseDirectory()。这有效,并且预期的类型已注册。但同样,这不是我们可以使用的解决方案,因为它会导致冲突将所有程序集移动到应用程序基目录。在这一点上,我真的不知道可能出现什么问题。
欢迎任何想法!
答案 0 :(得分:1)
在StructureMap google小组上就此问题获得了一些帮助。你可以在这里找到解决方案: http://groups.google.com/group/structuremap-users/browse_thread/thread/73ae145b3766bfb1
问题是包含被扫描接口的程序集被加载了两次,因为它既存在于应用程序文件夹中,也存在于另一个文件夹中。删除程序集副本并且不再加载时,问题就解决了。