NServiceBus.dll - Version 5.2.9 & NServiceBus.Host - Версия 6.0.0NServiceBus - Сканирование всех узлов
Я занимаюсь разработкой приложения рабочего процесса с подключаемыми. Расширениями
В моем решении у меня есть хост-узел NServiceBus, который я размещаю с помощью NServiceBus.Host.exe. Чтобы предотвратить сканирование, я определил EndpointConfigurationType в NServiceBus.Host.exe.config.
<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, чтобы прикоснуться к ней ,
Вам нужно добавить зависимости Libra.Workflow.Processors.dll к сканированию сборки? –
Вещь с надстройками заключается в том, что некоторые из их зависимостей расположены в другом месте, а точнее в подпапках для хоста. Когда я создаю надстройку, я ссылаюсь на AddInView, но я устанавливаю Copy Local = False, поэтому AddInView.dll не попадает в папку AddIn. структура, как это:.. '\ AddIns \ Libra.Workflow \ Libra.Workflow.Processors.dll' ' \ AddInViews \ Libra.Workflow.Processors.Pipeline.AddInView.dll' Это второй длл это зависимость, которую сканер не может найти.Причина, по которой он не включен в AddIn, состоит в том, что все надстройки используют этот же AddInView.dll –
. Однако я нашел временное решение, но очень хотел бы остановить NServiceBus от сканирования. Чтобы обойти эту проблему, чтобы добавить дополнительную подпапку в узел зондирования в файле .config '' '' ' <зондировании privatePath =» AddInSideAdapters; AddInViews, контрактов, HostSideAdapters "/>' ' assemblyBinding>' ' ' –