You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker构建.NET Core控制台应用时遇到fxr目录错误

解决Docker构建.NET控制台应用时的fxr文件夹错误

问题详情

构建Docker镜像时,执行dotnet restore步骤失败,错误信息如下:

ERROR [build 4/7] RUN dotnet restore "./WebScrapper.csproj" 0.6s
[build 4/7] RUN dotnet restore "./WebScrapper.csproj":
#12 0.525 A fatal error occurred, the folder [/usr/share/dotnet/host/fxr] does not contain any version-numbered child folders
executor failed running [/bin/sh -c dotnet restore "./WebScrapper.csproj"]: exit code: 131

当前使用的Dockerfile:

FROM mcr.microsoft.com/dotnet/runtime:6.0-bullseye-slim-arm32v7 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim-arm32v7 AS build
WORKDIR /src
COPY ["WebScrapper.csproj", "."]
RUN dotnet restore "./WebScrapper.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "WebScrapper.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebScrapper.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

ENTRYPOINT ["dotnet", "WebScrapper.dll"]

项目csproj文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <DockerfileContext>.</DockerfileContext>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="HtmlAgilityPack" Version="1.11.46" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.17.0" />
  </ItemGroup>

</Project>

解决方法

1. 修正构建架构不匹配问题

你使用的是arm32v7架构镜像,但如果构建机器是x86_64(普通PC/服务器),Docker默认不会自动模拟ARM架构,导致SDK内部组件无法正常加载。

  • 方法一:构建时指定架构参数
    DOCKER_BUILDKIT=1 docker build --platform linux/arm/v7 -t webscrapper .
    
  • 方法二:在Dockerfile中明确指定平台
    修改build阶段的基础镜像行:
    FROM --platform=linux/arm/v7 mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim-arm32v7 AS build
    

2. 更换稳定的SDK镜像

6.0-bullseye-slim-arm32v7镜像可能存在组件缺失,尝试使用非slim版本的SDK镜像测试:

FROM mcr.microsoft.com/dotnet/sdk:6.0-arm32v7 AS build

3. 清理Docker缓存

旧缓存镜像可能损坏,清理后重新构建:

docker system prune -a
docker build --platform linux/arm/v7 -t webscrapper .

4. 精简项目依赖

移除csproj中Docker构建不需要的包引用,Microsoft.VisualStudio.Azure.Containers.Tools.Targets仅用于Visual Studio容器工具:

<ItemGroup>
  <PackageReference Include="HtmlAgilityPack" Version="1.11.46" />
  <!-- 移除以下无用引用 -->
  <!-- <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.17.0" /> -->
</ItemGroup>

内容的提问来源于stack exchange,提问作者Gary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 17:37:38