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, и библиотека должна работать.
Пара вариантов / вопросов:
- Попробуйте объединить пакеты.
- Вы получаете какие-либо предупреждения по этому поводу?
- Проверьте библиотеки PCL форм Xamarin, которые используют этот пакет, и укажите их версию. Вполне возможно, что они не соответствуют версиям.
Это также может произойти, если пакет NuGet, выступающий в качестве основной ссылки, включает более низкие версии определенных сборок, которые требуются в более высоких версиях для проекта, на который ссылается.
Если вы не можете исправить это с помощью консолидации пакетов, попробуйте добавить более новую версию в качестве основной ссылки на проект. Если в ошибке упоминается сборка фреймворка, вам необходимо добавить соответствующий метапакет (например,
Microsoft.AspNetCore.App
) к проекту в качестве первичной ссылки.