Azure iot edge:解决方案不会在 VSCode 中构建和推送 arm32v7 平台

Azure iot edge: Solution does not build and push for arm32v7 platform in VSCode

我使用 IoT 工具在 VScode 中创建了一个开箱即用的模板 c# 边缘解决方案,但在尝试构建和推送解决方案时出现以下错误:

Step 4/12 : RUN dotnet restore
---> Running in 22c6f8ceb80c
A fatal error occurred, the folder [/usr/share/dotnet/host/fxr] does not contain any version-numbered child folders
The command '/bin/sh -c dotnet restore' returned a non-zero code: 131

当它试图 运行 通过 Dockerfile.arm32v7 中的命令时,这显然发生了,其中包含以下内容:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster-arm32v7 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim-arm32v7
WORKDIR /app
COPY --from=build-env /app/out ./

RUN useradd -ms /bin/bash moduleuser
USER moduleuser

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

这仅在为 arm32v7 构建时发生,但适用于 amd64。我正在为在 raspberry pi 上使用而构建,所以我需要 arm32。

在我看来,我的环境可能有问题,但不确定去哪里找? 我还看到一些评论,如果你想让它工作,你需要在 ARM 主机上构建,但我之前没有在文档中看到过,从易于开发的角度来看没有意义

使用 az acr build 提交构建时,您可以传入参数 --platform linux/arm/v7,它应该为您提供 ARM 构建环境。

如果您更喜欢在本地构建,可以尝试在 Dockerfile 的第一阶段使用 pulling the qemu package into the build context