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

VS2022构建.NET6 API Docker镜像时ContainerBuildAndLaunch任务失败

问题:VS2022构建.NET 6 Linux API容器时出现MSB4018错误

构建过程中出现以下错误:

MSB4018 The "ContainerBuildAndLaunch" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Win32.Registry, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'  user declined directory sharing

项目目标操作系统为Linux,但构建时仍尝试查找Microsoft.Win32.Registry组件,以下是项目使用的Dockerfile:

# 了解Visual Studio如何使用此Dockerfile加快调试构建镜像
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

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

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

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

解决方向

  • 修复Docker目录共享权限:错误提示中的"user declined directory sharing"是核心诱因。打开Docker Desktop的设置面板,进入「资源」->「文件共享」,勾选项目所在的磁盘分区并保存设置,解决本地目录与容器的共享权限问题。
  • 排查依赖项中的Windows组件:右键项目打开「管理NuGet程序包」,检查是否直接或间接引用了Microsoft.Win32.Registry包。如果是非必要依赖,直接卸载;如果是其他依赖带来的,替换为跨平台兼容的替代组件。
  • 清理构建缓存:删除项目目录下的bin和obj文件夹,同时在Docker Desktop中清理无用的镜像与缓存,重启Visual Studio后重新构建,避免缓存导致的异常依赖加载。
  • 关闭VS容器快速调试模式:右键项目进入「属性」->「调试」,找到容器相关设置,关闭「快速模式」,改用完整构建模式,规避快速模式下本地文件共享的异常逻辑。
  • 更新.NET 6 SDK:确保本地安装的.NET 6 SDK为最新稳定版本,旧版本可能存在跨平台容器构建的兼容性bug,更新后再尝试构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:25:32