.NET清理工具Skill clean

这个技能用于递归清理 .NET 项目的构建文件夹,如 bin 和 obj,可选清理 NuGet 包缓存和发布文件夹,帮助开发者释放磁盘空间、提高构建效率、优化开发环境。关键词:.NET 清理、bin obj 删除、NuGet 缓存、构建产物、开发工具、自动化清理。

后端开发 0 次安装 0 次浏览 更新于 3/11/2026

name: clean description: 递归清理 bin/obj 文件夹,可选清理包缓存和构建产物 argument-hint: “[–all] [–packages] [–artifacts] [–dry-run] [–project <name>]” allowed-tools: Bash, Glob, Read, AskUserQuestion

/dotnet:clean

递归清理构建产物(bin/obj 文件夹),可选清理包缓存和产物文件夹。

参数

$ARGUMENTS 解析参数:

标志 描述 默认值
--all 清理 bin、obj、包和产物 false
--packages 同时清理解决方案的 NuGet 包缓存 false
--artifacts 同时清理发布/产物文件夹 false
--project <路径> 目标特定项目(模糊匹配) 所有项目
--dry-run 显示将删除的内容而不实际删除 false

工作流程

步骤 1:定位目标

如果指定 --project

  1. 使用 Glob 查找匹配的 .csproj 文件
  2. 将清理范围限制在该项目的目录

如果未指定项目:

  1. 在当前/父目录中查找解决方案文件
  2. 清理解决方案目录树中的所有项目

步骤 2:查找要清理的目录

始终清理:

  • **/bin/ 目录
  • **/obj/ 目录

如果 --packages--all

  • 本地 .packages/ 文件夹(如果存在)
  • 该解决方案的 NuGet HTTP 缓存(使用 dotnet nuget locals http-cache --clear

如果 --artifacts--all

  • **/publish/ 目录
  • **/artifacts/ 目录
  • **/.artifacts/ 目录(SDK 风格产物输出)

步骤 3:计算大小

在删除前,计算总大小:

# 对每个找到的目录,求和大小
du -sh <directories>

步骤 4:执行或报告

如果 --dry-run

将删除以下目录:

  bin/obj 文件夹:
    src/MyApp/bin/ (45 MB)
    src/MyApp/obj/ (12 MB)
    tests/MyApp.Tests/bin/ (23 MB)
    tests/MyApp.Tests/obj/ (8 MB)

  总计:4 个目录,88 MB

运行时不带 --dry-run 以删除。

如果不是 --dry-run

  1. 使用平台适当的命令删除目录:

    • Windows:Remove-Item -Recurse -Forcerm -rf(Git Bash)
    • Unix:rm -rf
  2. 报告结果:

清理了 4 个目录,释放了 88 MB

  已删除:
    src/MyApp/bin/
    src/MyApp/obj/
    tests/MyApp.Tests/bin/
    tests/MyApp.Tests/obj/

步骤 5:清理 NuGet 缓存(如果请求)

如果 --packages--all

dotnet nuget locals http-cache --clear
dotnet nuget locals temp --clear

报告缓存清理结果。

平台考虑

Windows(Git Bash):

find . -type d \( -name "bin" -o -name "obj" \) -exec rm -rf {} + 2>/dev/null || true

Windows(PowerShell) - 避免使用: 不要使用 PowerShell 进行删除。改用 Git Bash 的 rm -rf

Unix/macOS:

find . -type d \( -name "bin" -o -name "obj" \) -exec rm -rf {} + 2>/dev/null || true

输出格式

模拟运行:

[模拟运行] 将清理以下内容:

bin/obj 文件夹(4 个目录,88 MB):
  - src/MyApp/bin/ (45 MB)
  - src/MyApp/obj/ (12 MB)
  - tests/MyApp.Tests/bin/ (23 MB)
  - tests/MyApp.Tests/obj/ (8 MB)

运行时不带 --dry-run 以删除。

实际清理:

清理了 .NET 构建产物

  移除了:4 个目录
  释放了:88 MB

  已删除目录:
    - src/MyApp/bin/
    - src/MyApp/obj/
    - tests/MyApp.Tests/bin/
    - tests/MyApp.Tests/obj/

包含包清理:

清理了 .NET 构建产物和 NuGet 缓存

  构建产物:4 个目录,88 MB
  NuGet HTTP 缓存:已清理
  NuGet 临时缓存:已清理

  总计释放:约 150 MB

示例

# 清理 bin 和 obj 文件夹
/dotnet:clean

# 预览将清理的内容
/dotnet:clean --dry-run

# 清理所有内容,包括包缓存
/dotnet:clean --all

# 清理特定项目
/dotnet:clean --project MyApp.Api

# 清理包括产物文件夹
/dotnet:clean --artifacts

安全性

  • 始终显示将删除的内容(除非使用 --dry-run)
  • 不删除源文件
  • 不删除 git 跟踪的文件
  • 跳过删除失败的目录(报告它们)