Различная публикация в сети Newtonsoft.Json.dll и публикация с помощью Visual Studio
У меня есть веб-приложение.NET Core с целевой платформой .netcoreapp2.0.
Если я публикую свое приложение через Visual Studio (профиль папки), я получаю другой Newtonsoft.Json.dll
затем с командой dotnet publish --configuration Release --output D:/publish/Frontend /property:PublishWithAspNetCoreTargetManifest=false
Версия публикации VS:
версия публикации dotnet:
Созданный файл AutomaticConfirmationWebfrontend.deps.json
всегда имеет эту зависимость:
"runtime": {
"lib/netstandard1.3/Newtonsoft.Json.dll": {
"assemblyVersion": "10.0.0.0",
"fileVersion": "10.0.1.20720"
}
}
Это приводит к проблеме с моим процессом CI/CD, когда я публикую свое приложение с помощью команды dotnet publish
. Если я открываю веб-сайт, я получаю сообщение об ошибке, что сборка Newtonsoft.JSON 10.0.0.0 не может быть найдена. Если я вручную скопирую DLL с версией 10.0.0.0 в папку приложения, она работает! Локальная отладка моего приложения тоже отлично работает!
У меня не установлен пакет Newtonsoft NuGet. Думаю, я использую встроенный пакет от.NET Core.
В моем Startup.cs
У меня есть следующая строка кода:
services.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
Мне это нужно для объектов JSON в нижнем регистре. Я импортировал это пространство имен:
using Newtonsoft.Json.Serialization
Кто-нибудь знает, что я делаю не так или как это исправить?
2 ответа
Я сделал 3 шага:
- Обновился до netcoreapp3.1
- Удалены все пакеты nuget из
C:\Users\******\.nuget\packages
- Установлен последний установщик MSBuild
Поздний ответ, но это может помочь кому-то в будущем. В рамках решения некоторый другой (другой проект) пакет NuGet , также зависящий от Newtonsoft.Json.dll . Проверьте все зависимости вашего пакета NuGet, особенно проекты тестирования, которые могут быть сопоставлены с помощью Newtonsoft.Json.dll более низкой версии . (См. Рис. Ниже).
Если это проблема, вы можете сопоставить файл .csproj в своей команде публикации, как показано ниже,
dotnet publish src/myproject.csproj --configuration Release --output D:/publish/Frontend /property:PublishWithAspNetCoreTargetManifest=false