我正在尝试使用StructureMap 2.6.4扫描模块文件夹(dll,运行时已知的位置),用于任何关闭某个接口的模块。在这种情况下,它是来自MassTransit的Consumes.Context。
我的类,其中可能有许多实现,在modules文件夹中:
public class MyConsumer : Consumes<MyMessage>.Context
{
public void Consume(IConsumeContext< MyMessage > message)
{
// Do some stuff
message.Respond(response);
}
}
我的StructureMap扫描仪:
container.Configure(x => x.Scan(y => { y.TheCallingAssembly(); y.WithDefaultConventions(); y.LookForRegistries(); y.ConnectImplementationsToTypesClosing(typeof(Consumes<>.Context)); y.AddAllTypesOf(typeof(Consumes<>.Context)); y.AssembliesFromPath(@"..\..\..\Web\Modules\bin\debug"); }));
当我查看容器中的对象时,我没有看到任何Consumes&lt;&gt; .Context实现。我确实在调试文件夹中看到了来自其他dll的对象。
但是,如果我将我的模块的dll复制到子目录中并像这样扫描:
y.AssembliesFromPath(@"..\..\..\Web\Modules\bin\debug\test")
扫描仪拾取我的物体。
失败:
y.AssembliesFromPath(@"..\..\..\Web\Modules\bin\debug");
使用:
y.AssembliesFromPath(@"..\..\..\Web\Modules\bin\debug\test");
为什么将我的dll放在子目录中工作而不能在父目录中工作?
我应该如何在Modules目录中扫描Consumes.Context的实现? 谢谢!