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

Docker构建.NET Framework 4.8项目报错Reached end of stream before end of read

解决方案
  • 首先修正Dockerfile的路径逻辑错误:原Dockerfile存在工作路径切换混乱的问题,nuget restore执行路径和后续msbuild执行路径不一致,会导致还原的NuGet包无法被编译步骤识别。需要统一工作路径,匹配你本地仓库的目录结构,示例修正后的Dockerfile如下:
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8 AS build
# 容器内创建与本地匹配的仓库根目录
WORKDIR /repoName
# 拷贝仓库所有文件到容器内对应目录
COPY . .
# 在仓库根目录执行NuGet还原(如果sln在根目录的话)
RUN nuget restore
# 切换到项目目录执行编译
WORKDIR /repoName/projectName
# 编译时禁用Roslyn共享编译服务,规避容器内服务崩溃问题
RUN msbuild ./projectName.csproj /p:Configuration=Debug /p:UseSharedCompilation=false
  • 优化.dockerignore规则:移除路径前不必要的./前缀,新增本地编译缓存目录过滤规则,避免冗余文件干扰构建:
.git
.idea
.vs
gen
packages
bin
obj
node_modules
irrelevantProject1
irrelevantProject2
# 其他无关目录
  • 调整Windows容器内存分配:.NET Framework编译对内存要求较高,Docker Desktop默认给Windows容器的内存配额不足会触发csc.exe崩溃,可在Docker Desktop设置中将Windows容器的内存上限调整到4GB及以上,也可在构建命令中直接指定内存配额:docker build --memory 4g .
  • 验证项目引用完整性:确认项目的所有程序集引用、项目引用都是相对路径,不存在依赖本地绝对路径的引用,避免容器内找不到依赖的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:02