NServiceBus.dll - 版本 5.2.9 和 NServiceBus.Host - 版本 6.0.0
我正在开发一个带有可插入插件的工作流应用程序。
在我的解决方案中,我有一个使用 NServiceBus.Host.exe 托管的 NServiceBus 主机程序集。为了防止扫描,我在 NServiceBus.Host.exe.config 中定义了 EndpointConfigurationType。
<appSettings>
<add key="EndpointConfigurationType" value="Libra.Workflow.Host.EndpointConfig, Libra.Workflow.Host" />
</appSettings>
我已经验证了这个配置正在被使用,因为如果我输入了一些未知类型,我会得到一个错误,还因为我的 EndpointConfig 类在任何扫描发生之前就被实例化了。
在这个类的自定义方法中,我添加了
public void Customize(BusConfiguration cfg)
{
cfg.AssembliesToScan(AllAssemblies.Matching("Libra.Workflow.Messages.dll"));
...
}
现在,当我运行这个项目时,我收到一个错误,因为 NServiceBus 正在扫描所有程序集并且对 System.AddIn 的性质做了一些无法扫描的程序集!
这种扫描发生在 Libra.Workflow.Host 被实例化之后,但在调用 Customize 方法之前。这是此扫描的调用堆栈:
at NServiceBus.Hosting.Helpers.AssemblyScanner.ScanAssembly(String assemblyPath, AssemblyScannerResults results) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Hosting\Helpers\AssemblyScanner.cs:line 153
at NServiceBus.Hosting.Helpers.AssemblyScanner.GetScannableAssemblies() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Hosting\Helpers\AssemblyScanner.cs:line 63
at NServiceBus.GenericHost..ctor(IConfigureThisEndpoint specifier, String[] args, List`1 defaultProfiles, String endpointName, IEnumerable`1 scannableAssembliesFullName) in c:\BuildAgent\work\a3de8759ee491634\src\NServiceBus.Hosting.Windows\GenericHost.cs:line 33
at NServiceBus.Hosting.Windows.WindowsHost..ctor(Type endpointType, String[] args, String endpointName, IEnumerable`1 scannableAssembliesFullName) in c:\BuildAgent\work\a3de8759ee491634\src\NServiceBus.Hosting.Windows\WindowsHost.cs:line 21
at NServiceBus.Hosting.Windows.HostServiceLocator.DoGetInstance(Type serviceType, String key) in c:\BuildAgent\work\a3de8759ee491634\src\NServiceBus.Hosting.Windows\HostServiceLocator.cs:line 31
at Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:line 49
我得到的错误信息是:
Could not enumerate all types for
'C:\msc\Trunk\Libra.Workflow\Build\Libra.Workflow.Host\AddIns\Libra.Workflow\Libra.Workflow.Processors.dll'
为什么 NServiceBus 扫描这个 DLL,我该如何防止它?
注意:由于这是一个 AddIn DLL,因此在 Libra.Workflow.Host 或任何其他相关程序集中都没有对它的引用,因此 NServiceBus 绝对没有理由必须接触它。