Кроссплатформенный C# REPL для командной строки с подсветкой синтаксиса, IntelliSense, установкой NuGet-пакетов и подключением к запущенным процессам.
Cysharp/ConsoleAppFramework
C#-фреймворк для CLI без зависимостей и аллокаций, совместимый с AOT и генерирующий код парсинга и маршрутизации во время компиляции.
- Звёзды
- 2,234
- Форки
- 130
- Открытые issues
- 2
- Последний коммит
- вчера
Что это?
ConsoleAppFramework — библиотека на C# для создания приложений командной строки. Вместо атрибутов и рефлексии во время выполнения она анализирует лямбда-выражения или методы, переданные в ConsoleApp.Run, и генерирует код для разбора аргументов и диспетчеризации команд во время компиляции. В результате приложение не зависит от самого фреймворка во время выполнения, поэтому размер сборки остается небольшим, а приложение совместимо с Native AOT.
Фреймворк рассчитан на .NET 8 и C# 13. Он поддерживает синхронные и асинхронные команды, несколько команд и вложенные команды, а также псевдонимы команд. По умолчанию названия опций записываются в lower-kebab-case, а описания и псевдонимы опций берутся из XML-комментариев документации. Справка и версия генерируются как строковые константы.
Также предусмотрена обработка Ctrl+C через CancellationToken, конвейеры фильтров (middleware), управление кодами завершения, валидация с помощью DataAnnotations, внедрение зависимостей для классов команд, глобальные опции и разбор данных через ISpanParsable<T> или JSON.
Ключевые возможности
- 01Генерирует код разбора аргументов и диспетчеризации команд во время компиляции, без зависимостей во время выполнения.
- 02Поддерживает Native AOT и не использует рефлексию и boxing.
- 03Обрабатывает Ctrl+C и SIGTERM через CancellationToken для корректного завершения работы.
- 04Предоставляет конвейеры фильтров (middleware), оборачивающие выполнение команд.
- 05Формирует текст справки на основе XML-комментариев документации, включая псевдонимы опций.
- 06Поддерживает валидацию через DataAnnotations и внедрение зависимостей для классов команд.
Сценарии использования
- Создание небольших CLI-инструментов с быстрым запуском, которые нужно публиковать как бинарные файлы Native AOT.
- Структурирование крупного инструмента командной строки на .NET с помощью вложенных команд и внедрения зависимостей.
- Создание внутренних пакетных инструментов, которым нужна безопасная обработка Ctrl+C при отмене долгих задач.
Быстрый старт
- 1
Добавьте пакет NuGet в проект
dotnet add package ConsoleAppFramework - 2
Вызовите ConsoleApp.Run в Program, используя лямбда-выражение или метод
Что важно знать
- Требуется .NET 8 или более поздняя версия. В проектах .NET 8 необходимо явно указать версию языка C# 13.
В подборках
Темы
Частые вопросы
- Что такое ConsoleAppFramework?
- C#-фреймворк для CLI без зависимостей и аллокаций, совместимый с AOT и генерирующий код парсинга и маршрутизации во время компиляции. ConsoleAppFramework — библиотека на C# для создания приложений командной строки. Вместо атрибутов и рефлексии во время выполнения она анализирует лямбда-выражения или методы, переданные в ConsoleApp.Run, и генерирует код для разбора аргументов и диспетчеризации команд во время компиляции. В результате приложение не зависит от самого фреймворка во время выполнения, поэтому размер сборки остается небольшим, а приложение совместимо с Native AOT.
- ConsoleAppFramework можно использовать бесплатно? Какая у него лицензия?
- ConsoleAppFramework распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- ConsoleAppFramework всё ещё поддерживается?
- Активно поддерживается. Последний коммит в ConsoleAppFramework — 6 нояб. 2026 г..
- Для чего можно использовать ConsoleAppFramework?
- Создание небольших CLI-инструментов с быстрым запуском, которые нужно публиковать как бинарные файлы Native AOT. Структурирование крупного инструмента командной строки на .NET с помощью вложенных команд и внедрения зависимостей. Создание внутренних пакетных инструментов, которым нужна безопасная обработка Ctrl+C при отмене долгих задач.
- Как установить ConsoleAppFramework?
- Добавьте пакет NuGet в проект: dotnet add package ConsoleAppFramework Вызовите ConsoleApp.Run в Program, используя лямбда-выражение или метод
- Где скачать ConsoleAppFramework?
- Исходный код и инструкции по установке — на GitHub: https://github.com/Cysharp/ConsoleAppFramework
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Логгер с нулевым числом аллокаций для текста и структурированных данных в .NET и Unity, построенный на Microsoft.Extensions.Logging и выводящий данные в UTF8.
Компилятор C# и .NET CIL в WebAssembly со своими CoreLib, runtime и SDK для создания компактных автономных компонентов WASI Preview 2.
Высокопроизводительная библиотека YAML 1.2 для C# с низким числом аллокаций, поддержкой .NET и Unity и сериализацией на основе генерации исходного кода.
Библиотека .NET для запуска процессов командной строки с гибкой настройкой, перенаправлением stdin/stdout/stderr и асинхронной отменой.
FreeSql — ORM для .NET с поддержкой AOT, миграций code-first и множества баз данных, включая MySQL, PostgreSQL, SQL Server, Oracle, SQLite и несколько китайских СУБД.