Repolode
Cysharp

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. 1

    Добавьте пакет NuGet в проект

    dotnet add package ConsoleAppFramework
  2. 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 для запуска процессов командной строки с гибкой настройкой, перенаправлением stdin/stdout/stderr и асинхронной отменой.

5 тыс.+2 за неделю286C#MITАктивно поддерживаетсяОбновлён 3 дня назад