C# - ядро ​​.net - сборка, которая имеет более высокую версию, чем указанная сборка

Я создал базовую библиотеку классов.net, которая использует технологию ADO.net.
Использованная библиотека: System.Data.SqlClient версии 4.4.3 от nuget

в консольном приложении.netcore работает нормально. Но когда я использую его с Xamarin форм PCL, возникает следующая ошибка:

Код серьезности Описание Ошибка состояния строки файла проекта CS1705 Сборка "xxx" с идентификатором "xxx, версия =1.0.0.0, культура = нейтральная, PublicKeyToken= ноль" использует "System.Runtime, версия =4.2.0.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a', которая имеет более высокую версию, чем указанная сборка'System.Runtime'с идентификатором'System.Runtime, версия =4.1.2.0, Culture= нейтральная, PublicKeyToken=b03f5f7f11d50a3a'

Я пытался обновить библиотеку System.Runtime отдельно, но результат тот же.
Как решить эту проблему?

2 ответа

Проекты PCL полагаются на выбранную поверхность API (профиль). System.Data.SqlClient однако, согласно NuGet, не поддерживает какую-либо поверхность PCL, а только.NET Standard и различные другие SDK. Измените свою общую библиотеку на.NET Standard, и библиотека должна работать.

Пара вариантов / вопросов:

  1. Попробуйте объединить пакеты.
  2. Вы получаете какие-либо предупреждения по этому поводу?
  3. Проверьте библиотеки PCL форм Xamarin, которые используют этот пакет, и укажите их версию. Вполне возможно, что они не соответствуют версиям.

Это также может произойти, если пакет NuGet, выступающий в качестве основной ссылки, включает более низкие версии определенных сборок, которые требуются в более высоких версиях для проекта, на который ссылается.

Если вы не можете исправить это с помощью консолидации пакетов, попробуйте добавить более новую версию в качестве основной ссылки на проект. Если в ошибке упоминается сборка фреймворка, вам необходимо добавить соответствующий метапакет (например, Microsoft.AspNetCore.App) к проекту в качестве первичной ссылки.

Другие вопросы по тегам