使用SonarScanner 4.3.1分析.NET 2.2代码时遇MSBuild版本兼容报错
解决SonarScanner 4.3.1分析.NET 2.2代码时的MSBuild版本报错
问题原因
你遇到的报错SonarQube分析仅支持MSBuild 14或MSBuild 15版本,本质是SonarScanner 4.3.1版本的兼容性限制:这个旧版本的SonarScanner只适配MSBuild 14/15,但你当前构建.NET 2.2代码时使用的MSBuild版本超出了这个范围(比如可能是MSBuild 16及以上,或者环境里没有正确关联到MSBuild 15)。
解决方案
这里提供两种可行的解决思路,你可以根据自己的场景选择:
1. 升级SonarScanner到兼容更高MSBuild版本的版本
SonarScanner 4.3.1是2019年发布的旧版本,后续的版本已经扩展了对MSBuild 16+的支持,同时也能兼容.NET 2.2代码。你可以通过以下命令全局升级SonarScanner:
dotnet tool update --global dotnet-sonarscanner
升级完成后,重新执行你的分析流程:
dotnet sonarscanner begin /k:"project-key" dotnet build <path to solution.sln> dotnet sonarscanner end
2. 指定MSBuild 15版本进行构建(不升级SonarScanner)
如果你暂时不想升级SonarScanner,可以强制构建时使用MSBuild 15:
- 首先找到MSBuild 15的安装路径,通常位于:
(如果是Visual Studio 2017的完整安装,路径类似,根据你的实际安装位置调整)C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin - 然后修改
dotnet build命令,添加--msbuild-path参数指定路径:dotnet build <path to solution.sln> --msbuild-path "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin"
额外提示
.NET Core 2.2已经在2020年12月停止了官方支持,如果你长期维护这个项目,建议考虑升级到更高版本的.NET(比如.NET 6或.NET 8,都是长期支持版本),这样不仅能获得更好的工具兼容性,还能得到安全更新和性能优化。
内容的提问来源于stack exchange,提问作者Rashmi Jain
相关产品推荐
相关产品推荐

