Repolode
Cysharp

Cysharp/ConsoleAppFramework

基于 C# Source Generator 的零依赖、零反射、支持 AOT 的命令行框架,在编译期生成解析与路由代码。

Star
2,234
Fork
130
未关闭 Issue
2
最近提交
昨天

这是什么?

ConsoleAppFramework 是一个用于构建命令行应用的 C# 库。它不依赖特性(Attribute)和运行时反射,而是在编译期分析传给 ConsoleApp.Run 的 Lambda 表达式或方法,并生成参数解析与分发代码。框架本身不产生运行时依赖,因此程序集体积小,并且兼容 Native AOT。

该框架面向 .NET 8 与 C# 13,支持同步和异步命令、多命令与嵌套命令以及命令别名。选项名默认转换为 lower-kebab-case,选项描述和别名取自 XML 文档注释,帮助与版本信息以字符串常量形式生成。

此外,它还提供基于 CancellationToken 的 Ctrl+C 优雅退出、Filter(中间件)管道、退出码管理、DataAnnotations 参数校验、命令类的依赖注入、全局选项,以及通过 ISpanParsable<T> 或 JSON 进行参数解析。

核心功能

  • 01在编译期生成参数解析与命令分发代码,无运行时依赖。
  • 02支持 Native AOT,避免反射与装箱。
  • 03通过 CancellationToken 处理 Ctrl+C 与 SIGTERM,实现优雅退出。
  • 04提供围绕命令执行的 Filter(中间件)管道。
  • 05从 XML 文档注释生成帮助信息,并支持选项别名。
  • 06支持 DataAnnotations 参数校验与命令类的依赖注入。

适用场景

  • 开发启动快速、需要以 Native AOT 发布的小型命令行工具。
  • 用嵌套命令与依赖注入组织较大的 .NET 命令行工具。
  • 编写需要安全响应 Ctrl+C 取消长时间任务的内部批处理工具。

快速上手

  1. 1

    将 NuGet 包添加到项目中

    dotnet add package ConsoleAppFramework
  2. 2

    在 Program 中使用 lambda 或方法调用 ConsoleApp.Run

使用前须知

  • 需要 .NET 8 或更高版本;使用 .NET 8 时必须显式将 LangVersion 设置为 13 或以上。

收录于专题

标签

常见问题

ConsoleAppFramework 是什么?
基于 C# Source Generator 的零依赖、零反射、支持 AOT 的命令行框架,在编译期生成解析与路由代码。 ConsoleAppFramework 是一个用于构建命令行应用的 C# 库。它不依赖特性(Attribute)和运行时反射,而是在编译期分析传给 ConsoleApp.Run 的 Lambda 表达式或方法,并生成参数解析与分发代码。框架本身不产生运行时依赖,因此程序集体积小,并且兼容 Native AOT。
ConsoleAppFramework 可以免费使用吗?用的什么许可证?
ConsoleAppFramework 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
ConsoleAppFramework 还在维护吗?
活跃维护中。ConsoleAppFramework 最近一次提交是在 2026年11月6日。
ConsoleAppFramework 适合用来做什么?
开发启动快速、需要以 Native AOT 发布的小型命令行工具。 用嵌套命令与依赖注入组织较大的 .NET 命令行工具。 编写需要安全响应 Ctrl+C 取消长时间任务的内部批处理工具。
ConsoleAppFramework 怎么安装和运行?
将 NuGet 包添加到项目中: dotnet add package ConsoleAppFramework 在 Program 中使用 lambda 或方法调用 ConsoleApp.Run
在哪里获取 ConsoleAppFramework?
源代码和安装说明在 GitHub 上:https://github.com/Cysharp/ConsoleAppFramework

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目