2013-03-04 2 views
2

Я работаю над примером обработчика сообщений, используя NServiceBus в проекте .NET 4.5. Он работает нормально, пока используется DefaultBuilder. Чтобы настроить контейнер для других служб с помощью Autofac, как только добавлена ​​ссылка на Autofac, а DefaultBuilder изменен на AutofacBuilder, я получаю исключение, как показано ниже. ссылка на NServiceBus.ObjectBuilder.Autofac.dll уже присутствует в проекте.Исключение при запуске конечной точки через NServiceBus.Host.exe

Исключение при запуске конечной точки, ошибка была зарегистрирована. Причина: Может загрузить файл или сборку 'Autofac, Version = 2.6.1.841, Culture = neutral, PublicKeyToken = 17863af14b0044da' или одна из его зависимостей . Определение манифеста размещенной сборки не соответствует ссылочной позиции сборки. (Исключение из HRESULT: 0x80131040)

ПРПЖД: Сравнивая имя сборки в результате несоответствия: Major Version
ERR: Не удалось завершить установку сборки (ч = 0x80131040). Исследование прекращено.

Что я делаю неправильно? Я пробовал Nuget, ручную ссылку, меняя целевую структуру на 4.0.

РЕДАКТИРОВАТЬ

После добавления связывания переадресации, сообщение об ошибке переходит в

Method not found: 'Autofac.Builder.IRegistrationBuilder`3<!0,!1,!2> 
Autofac.Builder.IRegistrationBuilder`3.PropertiesAutowired(Autofac.PropertyWiringFlags)'. 

at NServiceBus.Hosting.GenericHost.Start() in c:\BuildAgent\work\nsb.master_6\src\hosting\NServiceBus.Hosting\GenericHost.cs:line 43 
at NServiceBus.Hosting.Windows.WindowsHost.Start() in c:\BuildAgent\work\nsb.master_6\src\hosting\NServiceBus.Hosting.Windows\WindowsHost.cs:line 55 
at NServiceBus.Hosting.Windows.Program.<>c__DisplayClass8.<Main>b__4(WindowsHost service) in c:\BuildAgent\work\nsb.master_6\src\hosting\NServiceBus.Hosting.Windows\Program.cs:line 97 
at Topshelf.Internal.ControllerDelegates`1.StartActionObject(Object obj) in c:\Projects\TopShelfForNSB\src\Topshelf\Internal\ControllerDelegates.cs:line 17 
at Topshelf.Internal.IsolatedServiceControllerWrapper`1.<>c__DisplayClass2.<set_StartAction>b__1(TService service) in c:\Projects\TopShelfForNSB\src\Topshelf\Internal\IsolatedServiceControllerWrapper.cs:line 65 
at Topshelf.Internal.ServiceController`1.<.cctor>b__1(ServiceController`1 sc) in c:\Projects\TopShelfForNSB\src\Topshelf\Internal\ServiceController.cs:line 35 
at Magnum.StateMachine.LambdaAction`1.Execute(T instance, Event event, Object parameter) in :line 0 
at Magnum.StateMachine.EventActionList`1.Execute(T stateMachine, Event event, Object parameter) in :line 0 

App.config

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

ответ

3

NServiceBus v3.3.5 использует Autofac v2.6.1 .841, если вы ссылаетесь на другую версию, вам нужно добавить переадресацию привязки.

+0

Спасибо. Добавлено bindRedirects и получение другой ошибки. –

+1

Я вижу, что вы пытаетесь перейти на следующий основной выпуск (v3) Autofac, а v3 не обратно совместим с v2.6. Единственный вариант - перейти на NServiceBus v4 (мы обновили его до версии 3 Autofac), но NServiceBus v4 в настоящее время по-прежнему находится в бета-версии, но это не будет долго для полной версии! –

+0

Спасибо, Джон. Есть ли аналогичное ограничение для Ninject? –

Смежные вопросы