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

Docker构建执行msbuild触发OutOfMemoryException,求排查方案

解决Docker中MSBuild编译OutOfMemoryException问题

排查细节获取方案

  • 增强MSBuild日志输出:修改msbuild命令,添加/flp:v=diag;logfile=msbuild_diag.log参数,编译完成后从构建容器导出日志文件,查看内存相关的调用栈和资源占用细节
  • 实时监控容器内存:执行构建时用docker stats查看容器内存占用峰值,确认是否是容器内存配额不足导致
  • 升级编译器版本:Microsoft.Net.Compilers 3.3.1存在已知内存占用问题,尝试升级到4.x及以上版本,修改项目包引用后重新构建

直接修复尝试

  • 调整容器内存配额:构建时执行docker build --memory 4g --memory-swap -1(根据实际需求调整内存值),给容器分配更多内存
  • 修改编译参数:添加/p:BuildParallel=false关闭并行编译,减少内存并发占用;或临时添加/p:Optimize=false关闭代码优化,排查是否是优化阶段触发内存溢出
  • 清理冗余文件:在Dockerfile的COPY步骤前,添加命令删除项目目录下的bin、obj文件夹及无关文件,减少容器内文件占用的额外内存

额外修正

你的Dockerfile最后用dotnet命令启动.NET Framework项目是错误的,.NET Framework项目需通过IIS托管,正确的配置应移除现有ENTRYPOINT,或改为:

ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:20:40