2013-03-04 58 views
2

我正在使用.NET 4.5項目中的NServiceBus處理示例消息處理程序服務。只要使用DefaultBuilder,它就可以正常工作。一旦添加了對Autofac的引用,並且將DefaultBuilder更改爲AutofacBuilder,就可以使用Autofac爲其他服務配置容器,並且出現如下所示的異常。引用NServiceBus.ObjectBuilder.Autofac.dll已經在項目中。通過NServiceBus.Host.exe啓動端點時出現異常

啓動終點時發生異常,記錄了錯誤。原因: 不能加載文件或程序集'Autofac,Version = 2.6.1.841, Culture = neutral,PublicKeyToken = 17863af14b0044da'或其 依賴項之一。找到的程序集的清單定義不符合程序集引用的 。 (從HRESULT異常:0x80131040)

警告:比較組件名稱時發生不匹配:主版本
ERR:無法完成組裝(HR = 0x80131040)的設置。探測終止。

我在做什麼錯?我已經嘗試過Nuget,手動引用,將目標框架更改爲4.0。

EDIT

添加綁定重定向後,將錯誤消息發送到

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

謝謝。添加bindingRedirects並獲得另一個錯誤。 – 2013-03-05 02:11:01

+1

我看到您正嘗試升級到Autofac的下一個主要版本(v3),並且v3不能向後兼容v2.6。你唯一的選擇是升級到NServiceBus v4(我們已經升級到v3的Autofac),但是NServiceBus v4目前仍在測試階段,但是完整版本不會太長! – 2013-03-05 07:51:25

+0

謝謝約翰。 Ninject也有類似的限制嗎? – 2013-03-05 22:42:19