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

如何配置Sonar Scanner for .NET纳入非当前.NET解决方案的项目分析

解决SonarQube纳入独立.NET项目生成单一分析报告的问题

问题根源

你遇到的File "..." can't be indexed twice报错,是因为SonarScanner for MSBuild会自动索引解决方案关联的所有文件,手动配置sonar.sources会让部分文件被重复标记为“主文件”,触发索引冲突。

可行解决方案

方案1:合并解决方案(推荐)

直接把MyProject.Services目录下的所有项目添加到根目录的MyProject.sln中:

  • 打开Visual Studio,加载MyProject.sln
  • 右键解决方案 → 添加 → 现有项目,选中MyProject.Services下的所有.csproj/.vbproj文件
  • 保存解决方案后,构建脚本只需针对MyProject.sln执行Sonar扫描流程,无需额外配置,就能自动包含所有项目的分析。

方案2:不合并解决方案,扫描多个项目

利用SonarScanner for MSBuild支持同一扫描周期内处理多个解决方案的特性,修改PowerShell脚本:

# 初始化Sonar扫描(不要加sonar.sources参数)
& "C:\sonar-scanner-msbuild-4.6.0.1930-net46\SonarScanner.MSBuild.exe" begin `
  /k:"你的Sonar项目Key" `
  /n:"MyProject" `
  /v:"当前版本号"

# 构建根目录解决方案
& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" "MyProject.sln" /t:Rebuild /p:Configuration=Release

# 构建Services目录下的解决方案
& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" "MyProject.Services\MyProject.Services.sln" /t:Rebuild /p:Configuration=Release

# 结束扫描并上传结果到SonarQube
& "C:\sonar-scanner-msbuild-4.6.0.1930-net46\SonarScanner.MSBuild.exe" end
  • 注意:如果两个解决方案存在重复引用的项目(比如Model项目同时出现在两个sln里),需要在Sonar参数中添加sonar.exclusions排除其中一组重复文件,或者确保只在一个解决方案中包含该项目。

关键注意事项

  • 绝对不要在使用SonarScanner for MSBuild扫描解决方案时,同时配置sonar.sources参数,这是触发重复索引报错的核心原因。
  • 确保Bamboo构建任务的工作目录是MyProject根目录,避免路径错误导致的文件索引问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:51:12