SuperAPI AI 工具集

dotnet-system-commandline

测试与质量

查看项目

更新于 10-16 09:46

技能介绍

用途:帮助开发者使用 System.CommandLine 2.0 稳定版 API 构建 .NET 命令行应用。版本假设为 .NET 8.0+ 基线、System.CommandLine 2.0.0+(2025 年 11 月起为稳定 NuGet 包),示例均针对 2.0.0 GA API。

主要能力:覆盖 RootCommand、Command、Option、Argument 层级结构;SetAction 处理器绑定(同步与异步);基于 ParseResult 的取值;自定义类型解析与校验;Tab 补全与指令;使用 InvocationConfiguration 与 TextWriter 捕获进行测试;从 beta4 到 2.0.0 GA 的迁移;无 System.CommandLine.Hosting 的依赖注入集成。

重大变更:2.0.0 GA 与 beta4 差异显著。SetHandler 被 SetAction 取代;ICommandHandler 改为 SynchronousCommandLineAction/AsynchronousCommandLineAction;InvocationContext 移除(直接传 ParseResult);CommandLineBuilder 与 AddMiddleware 移除;IConsole 移除,改用 TextWriter 属性;System.CommandLine.Hosting、System.CommandLine.NamingConventionBinder 等包停用。不再使用 beta 时期模式。

使用方式:引用单个 System.CommandLine 包(2.0.*)。用可变集合属性 Options.Add、Subcommands.Add、Arguments.Add、Aliases.Add 添加元素,不再使用 AddOption/AddCommand/AddAlias。默认值通过 DefaultValueFactory 属性设置,而非构造函数。入口点先 rootCommand.Parse(args),再 Invoke() 或 InvokeAsync()。异步动作的第二参数为 CancellationToken。命令动作应写入 InvocationConfiguration.Output 以利于测试,而非直接写 Console.Out。

适用场景:需要构建 .NET 命令行工具的开发者,尤其是从 beta4 迁移到 2.0.0 GA 的场景。

限制:不涵盖 CLI 应用架构模式、原生 AOT 编译、CLI 分发策略、通用 CI/CD 模式、DI 容器机制、通用编码规范、Homebrew/apt/winget 打包;这些需参考其他技能。详细示例见该技能目录下的 examples.md。测试相关细节与完整示例资料中未给出全部内容。