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

Jenkins中SonarScanner.MSBuild.dll文件锁定问题求助

解决Jenkins中SonarScanner.MSBuild后续构建权限被拒的问题

我碰到过几乎一模一样的问题,这确实是.NET Core进程重用导致的文件锁定坑!下面给你几个亲测有效的解决办法:

1. 给dotnet命令添加节点禁用参数

虽然/nodereuse:false是MSBuild的原生参数,但dotnet命令可以通过-p:NodeReuse=false来传递这个设置,强制构建完成后释放所有相关进程和文件:

  • 修改你的build命令:
    dotnet build --version-suffix ${env.BUILD_NUMBER} -p:NodeReuse=false
    
  • 同时在OpenCover执行的xunit命令里也加上这个参数,避免测试进程锁定文件:
    D:\OpenCover\OpenCover.Console.exe -target:"c:\Program Files\dotnet\dotnet.exe" -targetargs:"xunit --no-build -xml XUnit.xml -p:NodeReuse=false" -output:coverage.xml -oldStyle -filter:"-[*Tests*]*" -register:user
    

2. 构建完成后主动清理dotnet进程

如果上面的参数还不能彻底解决,可以在SonarScanner的end步骤前,手动终止当前构建相关的dotnet进程(注意别误杀其他服务进程):

taskkill /F /IM dotnet.exe /FI "SESSIONNAME eq Console" /FI "USERNAME eq %USERNAME%"

这里的筛选条件可以根据你的Jenkins运行账号调整,确保只杀死当前任务产生的dotnet进程。

3. 升级SonarScanner.MSBuild版本

你当前使用的是.NET Core 2.0版本的扫描器,这个版本存在一些已知的文件锁定问题。建议升级到支持.NET Core 2.1的最新兼容版本(比如SonarScanner.MSBuild 4.x系列),新版本针对进程重用和文件清理做了不少优化,大概率能从根源解决问题。

验证方法

修改完配置后,连续触发3-4次构建,观察是否还会出现Access to the path 'SonarScanner.MSBuild.Common.dll' is denied的错误,同时查看Windows任务管理器里的dotnet进程是否会在构建完成后自动退出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:51:23