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
将 NuGet 包添加到项目中
dotnet add package ConsoleAppFramework - 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 数据每日更新。
相关项目
面向 .NET 与 Unity 的零分配文本及结构化日志库,基于 Microsoft.Extensions.Logging 构建,直接输出 UTF8。
1789+3 本周130C#MIT维护活跃更新于 3天前
将 C# 与 .NET CIL 直接编译为小体积独立 WASI Wasm 组件的编译器、运行时与 SDK。
295+17 本周13C#Other维护活跃更新于 20小时前
面向 .NET 和 Unity 的高性能、低内存分配 YAML 1.2 库,支持源码生成的序列化。
481+1 本周41C#MIT维护活跃更新于 前天