Два пакета Nuget ссылаются на конфликтующие реактивные библиотеки - PullRequest
0 голосов
/ 01 ноября 2018

Моя проблема очень похожа на упомянутую в этом посте:

System.ObservableExtensions.Subscribe: неоднозначная ссылка

Я хотел бы использовать пакет nuget "GraphQL для .NET" и пакет "Plugin.BluetoothLE".

«GraphQL для .NET» ссылается на System.Reactive.Core и «Plugin.BluetoothLE» ссылается на System.Reactive

Как указано в другом сообщении:

После дальнейшего изучения я обнаружил, что ObservableExtensions существует как System.Reactive.Core, так и System.Reactive.

Как мне решить это? «Plugin.BluetoothLE» имеет System.Reactive 4.0.0, а «GraphQL для .NET» имеет System.Reactive.Core 3.1.1.

Есть ли способ обновить System.Reactive.Core внутри GraphQL?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я не пробовал это ниже, но вы можете увидеть на их 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 и другие) 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-интерфейсы теперь System.Reactive.Interfaces Rx-Linq теперь System.Reactive.Linq Rx-PlatformServices теперь является System.Reactive.PlatformServices Rx-Testing теперь Microsoft.Reactive.Testing Это приводит именование пакетов NuGet в соответствие с рекомендациями NuGet, а также доминирующим пространством имен в каждом пакете. Ключ строгого имени также изменился, что считается серьезным изменением. Однако ожидаемых изменений API не ожидается, поэтому после внесения изменений в NuGet никаких изменений кода не требуется.

0 голосов
/ 01 ноября 2018

Один из двух способов

  1. Попробуйте установить Nuget, чтобы получить минимальную версию, указанную вашими пакетами.
  2. Разделите операции на отдельные библиотеки и управляйте различной версией пакета, специфичной для библиотеки.
...