docker - 构建缺少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'或其依赖项之一。该系统找不到指定的文件。
解决方案
就我而言,当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
就成功了。
推荐阅读
- python - 如何在鼠尾草的小数点后精确地得到 2 位数字
- amazon-web-services - 有没有办法确定在编译期间从 go 模块调用哪些函数?
- jmeter - BlazeMeter - 从 Jmeter 中的 beanshell 读取 CVS 文件
- python - 元素(按钮)无法滚动到视图中
- docker - 使用 yaml 文件将 Docker 容器部署到 Kubernetes
- python - Pandas 选择多个属于最终日期的指数
- arm - arm neon inline assemble“mov”clang和gcc的区别
- c# - 我想使用 jquery 将行插入 WebGrid
- c++ - OpenCV 球面投影:翘曲和反翘曲
- javascript - 使用身份验证发布 Ajax:401(未经授权)