C# NServiceBus如何知道要使用哪个DLL?

C# NServiceBus如何知道要使用哪个DLL?,c#,nservicebus,nservicebus4,C#,Nservicebus,Nservicebus4,这不是一个问题,而是一个让我理解NserviceBus中发生的“魔力”的问题 我有一个工作环境,其中NServiceBus服务被称为: "D:\Service\NServiceBus.Host.exe" -service /serviceName:"MyServiceAdapter" /endpointName:"MyQueue.Adapter" 现在在同一个目录中有我的应用程序“my.Adapter.dll”,它也有一个配置文件。任何地方都没有NserviceBus.config。不过:N

这不是一个问题,而是一个让我理解NserviceBus中发生的“魔力”的问题

我有一个工作环境,其中NServiceBus服务被称为:

"D:\Service\NServiceBus.Host.exe" -service  /serviceName:"MyServiceAdapter" /endpointName:"MyQueue.Adapter"
现在在同一个目录中有我的应用程序“my.Adapter.dll”,它也有一个配置文件。任何地方都没有NserviceBus.config。不过:NserviceBus似乎知道它必须使用“My.Adapter.dll”


为什么NServiceBus知道这一点?我在队列(MSMQ)或其他任何地方都找不到对我的应用程序的任何引用。它是否保存在注册表中?如果是:其中?

默认情况下,NServiceBus扫描与NServiceBus.Host.exe位于同一文件夹中的所有程序集,并查找其自己的标记(接口),如IWantCustomInitialization、IHandleMessage等。它使用默认的IoC容器生成器(Autofac)或您提供的容器生成器

您还可以通过使用V4的
Configure.With(assemblies)
和V5的
configuration.AssembliesToScan(myListOfAssemblies)
来限制扫描哪些程序集


此处的更多内容

默认情况下,NServiceBus扫描与NServiceBus.Host.exe位于同一文件夹中的所有程序集,并查找其自己的标记(接口),如IWantCustomInitialization、IHandleMessage等。它使用默认的IoC容器生成器(Autofac)或您提供的容器生成器

您还可以通过使用V4的
Configure.With(assemblies)
和V5的
configuration.AssembliesToScan(myListOfAssemblies)
来限制扫描哪些程序集


这里有更多内容

NserviceBus实际上比任何东西都更依赖于约定,它将扫描实现某些接口的类。您自己的程序集中是否有任何标记为接口(如
IConfigureThisEndpoint
)或其他NServiceBus接口之一的程序集?是。这一切都已经起作用了。我只想了解NServiceBus如何/在何处保存这些信息。据我所知,在启动
总线时,它将扫描您告诉它的所有程序集,反映所有对象,并检索实现其接口的程序集。它运行这些配置类,配置自身,并在其生命周期内将该信息保存在内存中。对于Pub/Sub类型的东西,它可以在SQL中维护订阅表,以及其他位置,具体取决于您的配置。除非我之前在使用它时遗漏了什么,否则它不会维护任何注册表项。默认情况下,NserviceBus实际上更依赖于约定,并且会扫描实现某些接口的类。您自己的程序集中是否有任何标记为接口(如
IConfigureThisEndpoint
)或其他NServiceBus接口之一的程序集?是。这一切都已经起作用了。我只想了解NServiceBus如何/在何处保存这些信息。据我所知,在启动
总线时,它将扫描您告诉它的所有程序集,反映所有对象,并检索实现其接口的程序集。它运行这些配置类,配置自身,并在其生命周期内将该信息保存在内存中。对于Pub/Sub类型的东西,它可以在SQL中维护订阅表,以及其他位置,具体取决于您的配置。除非我之前使用它时遗漏了什么,否则默认情况下,它不会维护任何注册表项。