两个Nuget包引用冲突的反应式库

时间:2018-11-01 16:18:57

标签: c# nuget nuget-package

我的问题与这篇文章中提到的问题非常相似:

System.ObservableExtensions.Subscribe: ambiguous reference

我想使用“ GraphQL for .NET” nuget软件包和“ Plugin.BluetoothLE”软件包。

“ GraphQL for .NET”引用System.Reactive.Core,“ Plugin.BluetoothLE”引用System.Reactive

如另一篇文章所述:

  

在进一步调查中,我发现ObservableExtensions同时存在System.Reactive.Core和System.Reactive。

我该如何解决? “ Plugin.BluetoothLE”具有System.Reactive 4.0.0,“ GraphQL for .NET”具有System.Reactive.Core 3.1.1。

我是否可以升级GraphQL中的System.Reactive.Core?

2 个答案:

答案 0 :(得分:1)

我还没有在下面尝试过,但是您可以在他们的github上看到它被描述为重大更改,并且有解决方法。参见下面突出显示的句子。

v4.0更改

由于修复#205-实施程序集版本策略引起的压倒性痛苦,我们将这些库重构为单个库System.Reactive。为避免破坏引用v3库的现有代码,我们在新程序集中使用了带有TypeForwarders的外观。 如果您引用了针对v3.0构建的二进制文件,请使用新的System.Reactive.Compatibility程序包。

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

.NET Framework 4.6+ .NET Standard 2.0+(包括.NET Core,Xamarin和其他) 超人 值得注意的是,不再支持Windows 8,Windows Phone 8和旧版PCL库。

v3.0重大更改

在从v2.x.x迁移到v3.0.0的过程中,NuGet软件包的软件包命名已更改

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-Testing现在是Microsoft.Reactive.Testing 这使NuGet软件包的命名与NuGet准则一致,并且与每个软件包中的主要命名空间保持一致。强名称密钥也已更改,这被认为是重大更改。但是,没有预期的API更改,因此,一旦您更改了NuGet,就无需更改任何代码。

答案 1 :(得分:0)

两种方式之一

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