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

创建.NET Framework 4.8 LTS Docker容器时遇micaut.dll.mui错误

解决.NET Framework 4.8容器构建的文件链接错误及Dockerfile修正

问题分析

你遇到的注册层失败、文件链接找不到错误,主要由两个原因导致:一是基础镜像的文件系统符号链接异常,二是Dockerfile中误用了针对.NET Core的dotnet命令(.NET Framework项目需使用MSBuild工具链)。

修复步骤

1. 修正Dockerfile中的构建命令(核心问题)

.NET Framework项目不支持dotnet restore/build/publish命令,需替换为nuget restore和msbuild,同时修正入口命令:

# 基础运行镜像
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 AS base
WORKDIR /app
EXPOSE 8080

# 构建镜像(包含MSBuild和NuGet)
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019 AS build
WORKDIR /src

# 复制项目文件并还原NuGet依赖
COPY *.csproj .
RUN nuget restore "xyz.csproj"

# 复制全部源码
COPY . .

# 使用MSBuild编译项目
WORKDIR "/src/."
RUN msbuild "xyz.csproj" /p:Configuration=Release /p:OutputPath=/app/build

# 发布项目
FROM build AS publish
RUN msbuild "xyz.csproj" /p:Configuration=Release /p:DeployOnBuild=true /p:PublishDir=/app/publish

# 最终镜像
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

# .NET Framework程序为exe格式,替换原错误的dotnet命令
# 若为Web项目,ASP.NET镜像默认启动IIS,可注释此ENTRYPOINT
ENTRYPOINT ["xyz.exe"]

2. 解决镜像文件链接异常

  • 拉取最新版基础镜像:
    docker pull mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019
    docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
    
  • 清理本地缓存的损坏镜像层:
    docker system prune -a
    
  • 确保Docker Desktop处于Windows容器模式(而非Linux容器)

3. 额外检查

  • 确认项目是.NET Framework 4.8类型(而非.NET Core/.NET 5+),右键项目→属性→应用程序→目标框架可查看
  • 若为Web项目,无需手动指定ENTRYPOINT,ASP.NET基础镜像会自动启动IIS服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:10:31