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

如何通过命令行检测C#项目中未使用的ProjectReference引用

命令行检测并移除CSPROJ中未使用的ProjectReference

官方MSBuild方案(对应VS工具底层逻辑)

VS的「移除未使用引用」工具本质依赖MSBuild的FindUnusedReferences目标,你可以直接通过命令行调用这个目标识别未使用的ProjectReference:

dotnet msbuild /t:FindUnusedReferences /p:FindUnusedReferences=true

执行后控制台会输出包含未使用项目引用的内容,示例如下:

未使用的引用: ProjectA.csproj, ProjectB.csproj

你可以通过脚本解析这段输出,提取未使用的项目路径,再配合dotnet remove reference命令批量移除,以下是PowerShell脚本片段示例:

$unusedRefs = dotnet msbuild /t:FindUnusedReferences /p:FindUnusedReferences=true | Select-String "未使用的引用: " | ForEach-Object { $_.Line -replace "未使用的引用: ", "" -split ", " }
foreach ($ref in $unusedRefs) {
    dotnet remove reference $ref
}

第三方工具简化流程

如果觉得解析MSBuild输出太繁琐,可以使用第三方全局工具dotnet-unused,它专门用于检测并移除未使用的项目/包引用:

  1. 安装工具:
dotnet tool install -g dotnet-unused
  1. 检测未使用引用:
dotnet unused
  1. 自动移除未使用的ProjectReference(添加--remove参数):
dotnet unused --remove

该工具支持排除特定引用、指定项目路径等参数,无需手动解析输出,适合快速集成到CI流水线。

CI流水线集成要点

  • 环境准备:确保CI环境安装对应版本的.NET SDK,以及需要的工具(如dotnet-unused)。
  • 流程选择:可以先运行检测命令,若存在未使用引用,可选择直接报错阻止流水线,或者自动执行移除并提交变更(需配置CI的代码提交权限)。
  • 避免误判:对于通过反射、动态加载使用的引用,需通过工具的排除参数(如dotnet unused --exclude ProjectC.csproj)跳过检测,防止误删必要引用。

注意事项

  • FindUnusedReferences目标在.NET 5及以上版本SDK中支持更完善,旧版本需升级SDK才能正常使用。
  • 执行检测前需确保项目能正常编译,该目标依赖编译生成的中间分析文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:22:17