#c# #.net
#c# #.net
Вопрос:
У меня есть решение с 2 проектами:
- Функция netcoreapp3.1 Azure
- библиотека netstandard2.1
Проект netcoreapp3.1 ссылается на проект библиотеки. Проект библиотеки использует System.Text.Json
API. Когда я создаю решение, я получаю следующую ошибку:
Сборка ‘System.Text.Json’ с идентификатором ‘System.Text.Json, Version= 4.0.1.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51’ использует ‘System.Runtime, Version= 4.2.2.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a’, которая имеет более высокую версию, чем указанная сборка ‘System.Runtime’с идентификатором ‘System.Runtime, Version= 4.1.2.0, Culture=нейтральный, PublicKeyToken=b03f5f7f11d50a3a’
Я попытался явно установить System.Text.Json 4.7.2 в проект netstandard2.1. Теперь приложение компилируется и работает. Однако во время процесса сборки я получаю несколько предупреждений, подобных этому:
##[предупреждение]/usr/share/dotnet/sdk/5.0.101/Microsoft.Common.CurrentVersion.targets(2123,5): предупреждение MSB3243: невозможно разрешить конфликт между «System.Text.Json, Version = 4.0.1.2, Culture = neutral, PublicKeyToken= cc7b13ffcd2ddd51» и «System.Text.Json, Version = 4.0.1.0, Culture = neutral, PublicKeyToken= cc7b13ffcd2ddd51». Выбор «System.Text.Json, Version = 4.0.1.2, Culture = нейтральный, PublicKeyToken = cc7b13ffcd2ddd51» произвольно.
Что я делаю не так?
Комментарии:
1. просто явно укажите версию пакета.
2.
System.Text.Json
изменилось в .net core 3.0, они внесли изменения в некоторые типы вSystem.Text.Json
пространстве имен. Также они рекомендуют: > Удалить Newtonsoft. Зависимость Json от .Net Core . До . Net Core 3.x .Net Core зависел от Newtonsoft.Json. А также я вижу, что ваша функция использует .net core 5 sdk. Проверьте это .3. Из того, что я обнаружил, что при использовании сборок .Net Core с. Библиотеки сетевых классов обычно не очень хорошо сочетаются, т. Е. При обновлениях вы будете продолжать появляться с подобными ошибками. Рассмотрите возможность использования вместо этого пакета .Net Core.
4. @DanielA. Белый Что вы имеете в виду под этим?
5. использовать
<PackageReference Include="System.Text.Json" Version="..." />
Ответ №1:
Иногда visual Studio рекомендует пакеты NuGet для установленного вами SDK (например, .NET 5), даже если ваш проект нацелен на .NET 3.1, как в вашем случае.
Для решения используйте управление пакетами NuGet…
В диспетчере вы можете обнаружить, что у вас есть пакеты, которые вы можете консолидировать (поэтому они будут использовать одну и ту же версию).
Если нет, вам придется искать и проверять в менеджере. Ищите пакеты, которые имеют 5. * вместо 3.1. *. Также вы можете найти немного другие версии. постарайтесь сделать их согласованными в вашем решении.
Ответ №2:
Вот, пожалуй, лучший ответ.
Понизьте Microsoft.Extensions.Configuration.Json
версию до 3.1.1, как на моем скриншоте.
Благодаря этому обходному пути проблемы github.