两个 Nuget 包引用了相互冲突的反应库

Two Nuget Packages references conflicting reactive libraries

我的问题与post中提到的非常相似:

System.ObservableExtensions.Subscribe: ambiguous reference

我想使用 "GraphQL for .NET" nuget 包和 "Plugin.BluetoothLE" 包。

"GraphQL for .NET" 引用 System.Reactive.Core 和 "Plugin.BluetoothLE" 引用 System.Reactive

如另一个 post 所述:

Upon further investigation I found that ObservableExtensions exists both System.Reactive.Core and System.Reactive.

我该如何解决这个问题? "Plugin.BluetoothLE" 有 System.Reactive 4.0.0,"GraphQL for .NET" 有 System.Reactive.Core 3.1.1。

我可以在 GraphQL 中升级 System.Reactive.Core 吗?

两种方式之一

  1. 尝试将 Nuget 设置为您的软件包列出的最低版本。
  2. 将操作拆分到单独的库中,并管理特定于库的不同包版本。

我没有在下面尝试过,但您可以在他们的 github 上看到它被描述为破坏性变更,并且有解决方法。请参阅下面突出显示的句子。

v4.0 改动

由于修复 #205 - 实施程序集版本策略造成的巨大痛苦,我们已将库重构为单个库 System.Reactive。为了防止破坏引用 v3 库的现有代码,我们为新程序集提供了带有 TypeForwarders 的外观。 如果您引用了针对 v3.0 构建的二进制文件,请使用新的 System.Reactive. 兼容包。

支持的平台 Rx 4.1 支持以下平台

.NET Framework 4.6+ .NET Standard 2.0+(包括 .NET Core、Xamarin 等) UWP 值得注意的是,不再支持 Windows 8、Windows Phone 8 和遗留 PCL 库。

v3.0 重大更改

NuGet 包在从 v2.x.x 到 v3.0.0

的过程中更改了它们的包命名

Rx-Main 现在 System.Reactive Rx-Core 现在是 System.Reactive.Core Rx-Interfaces 现在是 System.Reactive.Interfaces Rx-Linq 现在是 System.Reactive.Linq Rx-PlatformServices 现在是 System.Reactive.PlatformServices Rx 测试现在 Microsoft.Reactive.Testing 这使 NuGet 包命名符合 NuGet 指南以及每个包中的主导命名空间。强名称键也发生了变化,这被认为是一个重大变化。但是,没有预期的 API 更改,因此,一旦您进行了 NuGet 更改,就不需要更改任何代码。