SuperAPI AI 工具集

system-commandline-cli

通用与其它

查看项目

更新于 10-15 21:52

技能介绍

用途:在基于 System.CommandLine v2.x.x 的 .NET CLI 项目中创建、修改或审查命令,目标框架为 .NET 8 及以上,或任意 .NET Standard 2.0 实现(含 .NET Framework 4.6.1+、.NET Core 2.0+)。

主要能力与约定:

  1. 架构:Program.cs 作为入口,Commands/ 下按命令组组织,含 CommandBase、GlobalOptions、RootCommand 及各组的父命令与叶子命令。
  2. 优先定义项目专属抽象 CommandBase 继承 Command,具体命令继承它;简单应用可直接继承 Command。
  3. 选项用 Option<T> 定义,设置 Description、Required,可加短别名;位置参数用 Argument<T>;处理器中用 parseResult.GetValue 读取。
  4. 处理器通过 this.SetAction(CommandHandler) 绑定,签名为 async Task<int> CommandHandler(ParseResult, CancellationToken)。
  5. 组命令只注册子命令不设动作;顶层命令注册到 RootCommand,子命令注册到父命令构造函数。
  6. 破坏性操作需用 Console.ReadLine 做 yes/y 确认。
  7. 业务逻辑放在实现接口的服务类中,通过 DI 注入,处理器保持轻量,只做解析、校验、调用服务、输出。
  8. 服务在 Program.cs 用 TryAddSingleton 注册,可在 ServiceProviderExtensions.cs 加便捷扩展。
  9. 命名:命令名小写 kebab-case,命令类 PascalCase+Command,选项字段 _camelCaseOption,长名 --kebab-case,短别名 1-2 字符,命名空间 MyProject.Commands.<Group>。
  10. 所有命令类为 internal。
  11. 全局选项在 GlobalOptions.cs 定义一次,设 Recursive=true,只加到 RootCommand.Options,通过共享符号读取,校验放入 Validators,端点须为非空绝对 http/https URI,--key 可省略但显式空白值应拒绝。
  12. 新命令需按清单核对继承、描述、动作绑定、注册、可见性、文件与命名空间等。

限制:资料未提供具体安装命令、收费信息或平台支持范围;上述规则为技能约定,实际项目需结合自身结构遵循。