【发布时间】:2021-06-12 09:15:20
【问题描述】:
我的应用程序版本:netcoreapp2.2
MassTransit 包裹:
<PackageReference Include="MassTransit" Version="7.1.8" />
<PackageReference Include="MassTransit.AspNetCore" Version="7.1.8" />
<PackageReference Include="MassTransit.Extensions.DependencyInjection" Version="7.1.8" />
<PackageReference Include="MassTransit.RabbitMQ" Version="7.1.8" />
我需要此版本的 MassTransit 才能使用 IMessageScheduler(发布预定消息)。
现在当添加这个版本的 MassTransit 包时,我得到了这个错误:
错误 NU1107 检测到 Microsoft.Extensions.Configuration.Abstractions 的版本冲突。将 Microsoft.Extensions.Configuration.Abstractions 3.1.11 直接安装/引用到项目 MyAppXXX 以解决此问题。 MyAppXXX -> MassTransit.AspNetCore 7.1.8 -> Microsoft.Extensions.Hosting.Abstractions 3.1.11 -> Microsoft.Extensions.Configuration.Abstractions (>= 3.1.11) MyAppXXX -> Microsoft.AspNetCore.App 2.2.0 -> Microsoft.Extensions.Configuration.Abstractions (>= 2.2.0 &&
但是,masstransit 包支持 netstandard2.0 版本!
我能做些什么?
我可以在 .net core 2.2 中将“Microsoft.Extensions.Hosting.Abstractions”升级到 3.1.11 吗?也许不能。
还是有别的办法?
【问题讨论】:
-
不要使用
MassTransit.AspNetCore包,它是唯一需要3.1的包 -
@ChrisPatterson 但是不需要注册“AddMassTransitHostedService()”?或者没有这个包,怎么注册?
-
@ChrisPatterson 或者我可以将 HostedServiceConfigurationExtensions 类的内容从 MassTransit github 复制到我的应用程序?并使用我的新扩展而不是 AddMassTransitHostedService()?
-
@ChrisPatterson 我删除了 MassTransit.AspNetCore 包并且没有注册 AddMassTransitHostedService,它可以工作,但是不要将有错误的消息移动到 queue_error。
-
@ChrisPatterson 我从这里添加 MassTransitHostedService 类“github.com/MassTransit/MassTransit/commit/…”。并添加为托管服务“services.AddHostedService
();”。它适用于将有错误的消息移动到 queue_error。但是这种方式正确吗?!
标签: c# masstransit asp.net-core-2.2