SuperAPI AI 工具集

dotnet-cli-architecture

通用与其它

查看项目

更新于 10-16 01:15

技能介绍

用途:为 .NET 命令行工具提供分层架构指导,基于 .NET 8.0+ 与 System.CommandLine 2.0、通用主机。

主要能力:

  1. 三层结构:命令层(RootCommand、Command、Option<T>)负责解析参数;处理器层(ICommandHandler)编排服务并格式化输出;服务层为纯业务逻辑,不依赖 CLI,可被测试、库或 API 复用。
  2. clig.dev 原则:默认面向人类输出;提供 --json 全局选项输出机器可读结果;状态与诊断写 stderr,数据只写 stdout,保证管道(如 mycli list | jq .)不被日志污染;失败返回非零退出码;尽早校验输入;尊重 NO_COLOR;支持 --verbose 与 --quiet。
  3. 配置优先级(低到高):编译默认值、appsettings.json、appsettings.{Environment}.json、环境变量、CLI 参数。用户级配置遵循平台约定,如 Linux/macOS 的 ~/.config/mycli/ 或 ~/.mycli/,Windows 的 %APPDATA%\mycli\,XDG 的 $XDG_CONFIG_HOME/mycli/。
  4. 结构化日志:清除默认提供程序,使用 AddConsole 并设置 LogToStandardErrorThreshold = LogLevel.Trace 将日志写入 stderr;将 --verbose/--quiet 映射为 Debug/Warning/Information 日志级别。
  5. 退出码约定:0 成功,1 通用错误,2 用法错误(System.CommandLine 解析错误自动返回),3-9 保留常见类别(I/O、网络、认证等),10+ 工具专用;不使用大于 125 的退出码。
  6. stdin/stdout/stderr 模式:支持 --file 或管道输入(Console.IsInputRedirected 时读取 stdin);--json 输出 JSON;进度信息写 stderr。
  7. 测试:用 CommandLineBuilder 与 TestConsole 进行进程内调用,捕获退出码、stdout、stderr;通过注入假服务验证行为;断言退出码与输出格式;进程级测试仅用于已发布二进制的冒烟测试。

适用场景:构建结构清晰、可测试、可管道组合的 .NET CLI 工具。

限制:不涵盖 System.CommandLine API 细节、原生 AOT 编译与发布、CLI 分发打包与发布自动化、通用 CI/CD 模式、DI 容器内部机制及通用测试策略,这些由其他技能覆盖。资料未提供具体收费、价格或平台支持信息。