首页 > 解决方案 > 构建缺少Newtonsoft.Json的docker镜像时.net核心构建错误

问题描述

我正在尝试将我的 .net 核心项目构建到 docker 容器上,但它似乎找不到我认为包含在 asp.net 核心中的 Newtonsoft.Json

这是我的码头文件:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 58373
EXPOSE 44370

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["TestCode/TestCode.csproj", "TestCode/"]
RUN dotnet restore "TestCode/TestCode.csproj"
COPY . .
WORKDIR "/src/TestCode"
RUN dotnet build "TestCode.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "TestCode.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "TestCode.dll"]

尝试构建时出现以下错误错误无法加载文件或程序集'Newtonsoft.Json,Version = 9.0.0.0,Culture = Neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一。该系统找不到指定的文件。

标签: docker.net-coredockerfile

解决方案


就我而言,当JsonProperty在课堂上使用时,

Visual Studio 智能代码自动填充,

using Newtonsoft.Json;

那么期间docker build

警告 MSB3245:无法解析此引用。找不到程序集“Newtonsoft.Json”。检查以确保该程序集存在于磁盘上。

当我检查时,发现 Visual Studio 添加了一个程序集引用Newtonsoft.Json(您可以通过在 Visual Studio 的解决方案资源管理器中展开Dependencies节点来找到它)。我使用的是 Linux 映像。

所以为了解决这个问题,我删除了Assembly Reference,并添加了 nuget package Newtonsoft.Json,然后docker build就成功了。


推荐阅读