Различная публикация в сети 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 шага:

  1. Обновился до netcoreapp3.1
  2. Удалены все пакеты nuget из C:\Users\******\.nuget\packages
  3. Установлен последний установщик MSBuild

Поздний ответ, но это может помочь кому-то в будущем. В рамках решения некоторый другой (другой проект) пакет NuGet , также зависящий от Newtonsoft.Json.dll . Проверьте все зависимости вашего пакета NuGet, особенно проекты тестирования, которые могут быть сопоставлены с помощью Newtonsoft.Json.dll более низкой версии . (См. Рис. Ниже).

Если это проблема, вы можете сопоставить файл .csproj в своей команде публикации, как показано ниже,

      dotnet publish src/myproject.csproj --configuration Release --output D:/publish/Frontend /property:PublishWithAspNetCoreTargetManifest=false
Другие вопросы по тегам