mcpField
O
outdated

outdated

github.com/codewithmukesh开发7912.9k 次安装12 周前更新
代码仓库

关于 outdated

outdated 是面向 .NET 开发者的依赖审计技能,用于评估软件包状况。它整合包清单、版本与漏洞检查以及许可证筛查,并生成按优先级排列的报告。

主要功能

  1. 01按项目盘点软件包
  2. 02检查过时和易受攻击的包
  3. 03标记即将发生的许可证变化
  4. 04按优先级列出问题及行动
  5. 05更新后验证构建

适用场景

  1. 01.NET 升级前审计依赖
  2. 02检查继承而来的解决方案
  3. 03调查 NuGet 审计警告
  4. 04逐个规划软件包更新

MCP 相关

使用 get_nuget_packages MCP 工具盘点软件包,并识别集中包管理和目标框架。更新后还可通过 get_diagnostics 检查解决方案。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/codewithmukesh/dotnet-claude-kit --skill outdated

安装后在 Claude Code 中输入/outdated确认已加载。

详细介绍

/outdated

内容

三层依赖健康报告:

  1. 清单 — 通过 get_nuget_packages MCP 工具列出每个项目的所有 PackageReference,并识别 TFM 和中央包管理情况(无需网络,消耗的令牌少)。
  2. 过时情况 + 漏洞 — 通过 dotnet CLI 检查当前版本与最新稳定版的差异,以及已知 CVE。
  3. 许可证筛查 — 标记转为商业许可证的包,避免无意执行 dotnet outdated --upgrade 后在不知情的情况下改变法律立场。

输出为一张按优先级排列的表格——漏洞优先,其次是许可证陷阱,最后是过时情况——每行都附有建议操作。

适用场景

  • “检查过时的包”“包审计”“依赖健康”
  • 升级 .NET 版本之前(配合 /migrate 流程 B)
  • 接手不熟悉的代码库之后
  • 出现 Dependabot/NuGet 审计警告,并且你想了解全貌
  • 对长期维护的项目进行定期检查——每季度一次是不错的频率

操作方法

步骤 1:清点(MCP,无需网络)

get_nuget_packages()                          -- whole solution
get_nuget_packages(projectFilter: "Api")      -- or one project

按项目返回 {Name, TargetFramework, Cpm, Packages: [{Id, Version}]}。 注意 Cpm: true——此时更新应放在 Directory.Packages.props 中,而不是 csproj。也请借此标记各项目之间混用的 TFM。

步骤 2:检查过时情况和漏洞(CLI)

dotnet list package --outdated
dotnet list package --vulnerable --include-transitive

两项检查都需要先成功还原。如果还原失败,请先修复再进行审计——损坏的锁定状态会导致版本输出不可靠。

步骤 3:许可证筛查

对照已知的商业化变更检查清单(完整说明见 knowledge/package-recommendations.md):

包商业许可证起始版本免费替代方案
MediatR13+(Lucky Penny,RPL)Mediator(martinothamar)——源生成,MIT
MassTransit9+(v8 为 Apache,补丁支持于 2026 年结束,随后 EOL)Wolverine 6.x,或短期继续使用 v8
FluentAssertions8+(v7 保持 Apache,已冻结)xUnit 内置 Assert(kit 默认)、Shouldly、AwesomeAssertions
AutoMapper15+(Lucky Penny)手动映射(kit 默认)或 Mapperly(MIT)

当项目使用免费主版本,而简单地“全部更新”会越过许可边界时,就会触发许可证标记——这正是此步骤要避免的陷阱。

步骤 4:报告

生成一张按优先级排列的表格:

优先级含义操作
VULNERABLE当前版本存在已知 CVE立即更新、测试并部署
LICENSE下一个主版本会越过商业许可边界锁定在边界版本以下,或规划迁移
MAJOR落后一个主版本(可能存在破坏性变更)一次更新一个,先阅读发行说明
MINOR/PATCH常规版本差异批量更新补丁版本;小版本一次更新一个

步骤 5:执行(可选)

可通过 /migrate 流程 C 执行更新——一次更新一个包,每次之间运行 dotnet build && dotnet test。切勿批量更新主版本: 批量失败时无法确定问题归属。

使用的 MCP 工具
  • get_nuget_packages — 清点、检测 CPM、审计 TFM
  • get_diagnostics — 验证更新后解决方案仍能干净地编译

示例

User: /outdated

Claude: Inventorying packages (get_nuget_packages)...
  3 projects, CPM enabled (Directory.Packages.props), all net10.0.

  Checking versions and CVEs...

  | Package                  | Current | Latest  | Priority   | Action                          |
  |--------------------------|---------|---------|------------|---------------------------------|
  | System.Text.Json (trans.)| 10.0.2  | 10.0.10 | VULNERABLE | Update now (CVE-2026-XXXX)      |
  | MassTransit              | 8.3.0   | 9.1.2   | LICENSE    | v9 is commercial. Stay on v8    |
  |                          |         |         |            | (EOL end 2026) or plan Wolverine|
  | Serilog.AspNetCore       | 9.0.0   | 10.0.0  | MAJOR      | Update alone, check sink compat |
  | FluentValidation         | 12.0.1  | 12.1.1  | PATCH      | Batch with other patches        |

  1 vulnerability, 1 license trap, 1 major, 1 patch.
  Want me to apply these via /migrate Flow C?

相关内容

  • /migrate — 流程 C 会执行本报告建议的更新
  • knowledge/package-recommendations.md — 经过审核的包及许可详情
  • knowledge/mediatr-to-mediator-migration.md — 逐步退出 MediatR 的指南
  • /verify — 应用更新后的完整流水线

评论

支持 Markdown