【问题标题】:Exception when starting endpoint via NServiceBus.Host.exe通过 NServiceBus.Host.exe 启动端点时出现异常
【发布时间】:2013-03-04 20:43:03
【问题描述】:

我正在开发一个在 .NET 4.5 项目中使用 NServiceBus 的示例消息处理程序服务。只要使用 DefaultBuilder,它就可以正常工作。要在添加对 Autofac 的引用并将 DefaultBuilder 更改为 AutofacBuilder 后立即使用 Autofac 为其他服务配置容器,我得到如下所示的异常。对 NServiceBus.ObjectBuilder.Autofac.dll 的引用已经在项目中。

启动端点时出现异常,已记录错误。原因:可以 不加载文件或程序集'Autofac,Version = 2.6.1.841, Culture=neutral, PublicKeyToken=17863af14b0044da' 或其之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (HRESULT 异常:0x80131040)

警告:比较程序集名称导致不匹配:主要版本
ERR:无法完成程序集的设置(hr = 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>

【问题讨论】:

    标签: nservicebus .net-4.5 autofac


    【解决方案1】:

    NServiceBus v3.3.5 使用 Autofac v2.6.1.841,如果您引用不同的版本,则需要添加绑定重定向。

    【讨论】:

    • 我看到您正在尝试升级到 Autofac 的下一个主要版本 (v3),并且 v3 不向后兼容 v2.6。您唯一的选择是升级到 NServiceBus v4(我们已将其升级到 Autofac 的 v3),但 NServiceBus v4 目前仍处于 Beta 阶段,但很快就会完全发布!
    • 谢谢约翰。 Ninject 是否也有类似的限制?
    • Ninject 应该没问题,因为我们使用的是最新版本的 v3。
    猜你喜欢
    • 2023-03-05
    • 2020-09-05
    • 1970-01-01
    • 2014-03-07
    • 2016-02-23
    • 2011-08-30
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多