2

我有一个带有目标框架.netcoreapp2.0的.NET Core Web 应用程序

如果我通过 Visual Studio(文件夹配置文件)发布我的应用程序,我会得到一个不同Newtonsoft.Json.dll的命令 dotnet publish --configuration Release --output D:/publish/Frontend /property:PublishWithAspNetCoreTargetManifest=false

VS发布版本

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。如果我手动将版本为 10.0.0.0 的 DLL 复制到应用程序文件夹中,它可以工作!在本地调试我的应用程序也很好!

我没有安装 Newtonsoft NuGet 包。我想我正在使用 .NET Core 的内置包。

在我的Startup.cs我有以下代码行:

services.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

对于小写 JSON 对象,我需要它。我已经导入了这个命名空间:

using Newtonsoft.Json.Serialization

有人知道我做错了什么或如何解决这个问题吗?

4

2 回答 2

0

我做了3个步骤:

  1. 升级到netcoreapp3.1
  2. 删除了所有 nuget 包C:\Users\******\.nuget\packages
  3. 安装了最新的 MSBuild 安装程序
于 2021-07-14T13:53:01.977 回答
0

迟到的答案,但它可能会在未来帮助某人。在解决方案中,其他一些(其他项目)NuGet包也取决于Newtonsoft.Json.dll。检查所有 NuGet 包依赖项,尤其是测试项目,这些项目可能与低版本Newtonsoft.Json.dll映射。(参考下图)。

在此处输入图像描述

如果这是问题所在,那么您可以在发布命令中映射.csproj文件,如下所示,

dotnet publish src/myproject.csproj --configuration Release --output D:/publish/Frontend /property:PublishWithAspNetCoreTargetManifest=false
于 2021-10-18T13:50:12.370 回答