.NET SDK 2.1.300-rc1构建后残留.NET Core Host进程求助
解决.NET Core 2.1 RC1构建后残留.NET Core Host进程的问题
我之前在测试2.1.300-rc1版本时也碰到过一模一样的进程残留问题,给你几个经过验证的解决思路:
1. 升级到正式版SDK(优先推荐)
RC版本本身就是预览版,存在进程泄漏这类bug很常见。2.1.300的正式版早就发布了,直接升级到正式版的.NET Core 2.1 SDK,大部分这类RC阶段的进程残留问题都会被官方修复,这是最彻底的解决办法。
2. 尝试添加额外的构建参数
除了你试过的/p:UseSharedCompilation=false和/p:UseRazorBuildServer=false,可以再加上这两个参数试试:
dotnet build /p:UseHostCompilerIfAvailable=false /p:BuildServer=false
这两个参数会强制关闭更多后台编译相关的服务进程,有时候RC版本的共享编译模块会出现进程回收失败的情况,加上这两个参数能彻底禁用相关后台服务。
3. 在PowerShell脚本中手动清理残留进程
如果暂时没法升级SDK,可以在每个构建完成后,手动清理闲置的dotnet进程。比如在你的循环里,每次dotnet build执行完成后,添加一段PowerShell命令杀掉那些无窗口、启动时间较早的dotnet进程:
# 构建完成后执行 Get-Process dotnet | Where-Object { # 筛选无主窗口、启动时间超过5分钟的进程(可根据你的构建时长调整) $_.MainWindowTitle -eq "" -and $_.StartTime -lt (Get-Date).AddMinutes(-5) } | Stop-Process -Force
注意:这个方法是临时workaround,要根据你的实际构建时长调整时间阈值,避免误杀正在运行的正常进程。
4. 检查脚本的执行逻辑
确认你的PowerShell脚本是同步执行每个dotnet build命令,没有使用Start-Process或者后台运行的方式。比如确保脚本里是直接调用:
dotnet build YourSolution.sln
而不是用Start-Process dotnet -ArgumentList "build YourSolution.sln" -NoNewWindow -PassThru这类可能导致进程脱离脚本管控的方式。
内容的提问来源于stack exchange,提问作者swannee
相关产品推荐
相关产品推荐

