Cysharp/ConsoleAppFramework
Source Generatorで解析・ルーティングコードをコンパイル時に生成する、依存ゼロ・アロケーションゼロ・AOT対応のC# CLIフレームワーク。
- スター
- 2,234
- フォーク
- 130
- 未解決の Issue
- 2
- 最終コミット
- 昨日
これは何?
ConsoleAppFrameworkは、コマンドラインアプリケーションを構築するためのC#ライブラリです。属性や実行時リフレクションに依存する代わりに、ConsoleApp.Runに渡されたラムダ式やメソッドを解析し、引数の解析とコマンドのディスパッチに必要なコードをコンパイル時に生成します。その結果、フレームワーク自体への実行時依存がないアプリケーションとなり、アセンブリサイズを小さく保ち、Native AOTとの互換性も確保できます。
.NET 8とC# 13を対象とし、同期・非同期コマンド、複数階層のネストしたコマンド、コマンドエイリアスに対応しています。オプション名はデフォルトでlower-kebab-caseになり、オプションの説明とエイリアスはXMLドキュメントコメントから取得します。ヘルプとバージョンの出力は文字列定数として生成されます。
さらに、CancellationTokenによるCtrl+C処理、フィルター(ミドルウェア)パイプライン、終了コード管理、DataAnnotationsによる検証、コマンドクラスの依存性注入、グローバルオプション、ISpanParsable<T>またはJSONによる解析も備えています。
主な機能
- 01実行時依存なしで、引数解析とコマンドのディスパッチに必要なコードをコンパイル時に生成します。
- 02Native AOTに対応し、リフレクションとボクシングを回避します。
- 03CancellationTokenを通じてCtrl+CとSIGTERMを処理し、安全にシャットダウンできます。
- 04コマンド実行を囲むフィルター(ミドルウェア)パイプラインを提供します。
- 05オプションエイリアスを含むヘルプテキストを、XMLドキュメントコメントから生成します。
- 06DataAnnotationsによる検証と、コマンドクラスへの依存性注入に対応しています。
ユースケース
- Native AOTバイナリとして公開する、小さく高速に起動するCLIツールの構築。
- 依存性注入を使い、大規模な.NETコマンドラインツールをネストしたコマンドに整理する。
- 長時間実行タスクをCtrl+Cで安全にキャンセルできる、社内向けのバッチ形式ツールの作成。
クイックスタート
- 1
NuGet パッケージをプロジェクトに追加します
dotnet add package ConsoleAppFramework - 2
Program 内でラムダまたはメソッドを使って ConsoleApp.Run を呼び出します
使う前に知っておきたいこと
- .NET 8 以降が必要です。.NET 8 のプロジェクトでは、C# 13 の言語バージョンを明示的に設定する必要があります。
収録されている特集
トピック
よくある質問
- ConsoleAppFramework とは?
- Source Generatorで解析・ルーティングコードをコンパイル時に生成する、依存ゼロ・アロケーションゼロ・AOT対応のC# CLIフレームワーク。 ConsoleAppFrameworkは、コマンドラインアプリケーションを構築するためのC#ライブラリです。属性や実行時リフレクションに依存する代わりに、ConsoleApp.Runに渡されたラムダ式やメソッドを解析し、引数の解析とコマンドのディスパッチに必要なコードをコンパイル時に生成します。その結果、フレームワーク自体への実行時依存がないアプリケーションとなり、アセンブリサイズを小さく保ち、Native AOTとの互換性も確保できます。
- ConsoleAppFramework は無料で使えますか?ライセンスは?
- ConsoleAppFramework は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- ConsoleAppFramework は今もメンテナンスされていますか?
- 活発にメンテナンス中。ConsoleAppFramework の最終コミットは 2026年11月6日 です。
- ConsoleAppFramework は何に使えますか?
- Native AOTバイナリとして公開する、小さく高速に起動するCLIツールの構築。 依存性注入を使い、大規模な.NETコマンドラインツールをネストしたコマンドに整理する。 長時間実行タスクをCtrl+Cで安全にキャンセルできる、社内向けのバッチ形式ツールの作成。
- ConsoleAppFramework のインストール方法は?
- NuGet パッケージをプロジェクトに追加します: dotnet add package ConsoleAppFramework Program 内でラムダまたはメソッドを使って ConsoleApp.Run を呼び出します
- ConsoleAppFramework はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/Cysharp/ConsoleAppFramework
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Microsoft.Extensions.Loggingを基盤とし、UTF8出力に対応した.NETおよびUnity向けのゼロアロケーションなテキスト・構造化ロガー。
独自のCoreLib、ランタイム、SDKを備え、C#と.NET CILをコンパイルして小型のスタンドアロンWASI Preview 2コンポーネントを生成するコンパイラです。
ソース生成によるシリアライズに対応した、.NETとUnity向けの高性能・低アロケーションなC#製YAML 1.2ライブラリ。
.NET向けORMのFreeSqlは、AOT、CodeFirstマイグレーションに対応し、MySQL、PostgreSQL、SQL Server、Oracle、SQLiteや複数の中国国産データベースをサポートします。