Repolode
Cysharp

Cysharp/ConsoleAppFramework

Um framework C# para CLI sem dependências e sem alocações, seguro para AOT, que gera código de parsing e roteamento em tempo de compilação por meio de um Source Generator.

Estrelas
2,234
Forks
130
Issues abertas
2
Último commit
ontem

O que é?

ConsoleAppFramework é uma biblioteca C# para criar aplicações de linha de comando. Em vez de depender de atributos e reflexão em tempo de execução, analisa as expressões lambda ou os métodos passados para ConsoleApp.Run e gera o código de parsing de argumentos e despacho em tempo de compilação. Assim, a aplicação não tem dependências de execução do próprio framework, o que mantém o tamanho do assembly pequeno e garante compatibilidade com Native AOT.

O framework é voltado para .NET 8 com C# 13 e oferece suporte a comandos síncronos e assíncronos, comandos múltiplos e aninhados e aliases de comandos. Por padrão, os nomes das opções usam lower-kebab-case, e as descrições e os aliases das opções vêm dos comentários de documentação XML. A saída de ajuda e de versão é gerada como constantes de string.

Também inclui tratamento de Ctrl+C por meio de CancellationToken, pipelines de filtros (middleware), gerenciamento de código de saída, validação com DataAnnotations, injeção de dependência para classes de comandos, opções globais e parsing via ISpanParsable<T> ou JSON.

Recursos principais

  • 01Gera código de parsing de argumentos e despacho de comandos em tempo de compilação, sem dependências em tempo de execução.
  • 02Oferece suporte a Native AOT e evita reflexão e boxing.
  • 03Trata Ctrl+C e SIGTERM por meio de CancellationToken para permitir um encerramento gracioso.
  • 04Oferece pipelines de filtros (middleware) em torno da execução dos comandos.
  • 05Gera o texto de ajuda a partir dos comentários de documentação XML, incluindo aliases das opções.
  • 06Oferece suporte à validação com DataAnnotations e à injeção de dependência para classes de comandos.

Casos de uso

  • Criar ferramentas de CLI pequenas e com inicialização rápida, que precisam ser publicadas como binários Native AOT.
  • Organizar uma ferramenta de linha de comando .NET grande em comandos aninhados com injeção de dependência.
  • Criar ferramentas internas no estilo batch que precisam cancelar tarefas longas com segurança ao pressionar Ctrl+C.

Início rápido

  1. 1

    Adicione o pacote NuGet ao seu projeto

    dotnet add package ConsoleAppFramework
  2. 2

    Chame ConsoleApp.Run em Program usando uma lambda ou um método

Antes de usar

  • Requer .NET 8 ou posterior. Em projetos .NET 8, é necessário definir explicitamente a versão 13 da linguagem C#.

Em coleções

Tópicos

Perguntas frequentes

O que é ConsoleAppFramework?
Um framework C# para CLI sem dependências e sem alocações, seguro para AOT, que gera código de parsing e roteamento em tempo de compilação por meio de um Source Generator. ConsoleAppFramework é uma biblioteca C# para criar aplicações de linha de comando. Em vez de depender de atributos e reflexão em tempo de execução, analisa as expressões lambda ou os métodos passados para ConsoleApp.Run e gera o código de parsing de argumentos e despacho em tempo de compilação. Assim, a aplicação não tem dependências de execução do próprio framework, o que mantém o tamanho do assembly pequeno e garante compatibilidade com Native AOT.
ConsoleAppFramework é gratuito? Qual é a licença?
ConsoleAppFramework é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
ConsoleAppFramework ainda é mantido?
Manutenção ativa. O último commit de ConsoleAppFramework foi em 6 de nov. de 2026.
Para que posso usar ConsoleAppFramework?
Criar ferramentas de CLI pequenas e com inicialização rápida, que precisam ser publicadas como binários Native AOT. Organizar uma ferramenta de linha de comando .NET grande em comandos aninhados com injeção de dependência. Criar ferramentas internas no estilo batch que precisam cancelar tarefas longas com segurança ao pressionar Ctrl+C.
Como instalar ConsoleAppFramework?
Adicione o pacote NuGet ao seu projeto: dotnet add package ConsoleAppFramework Chame ConsoleApp.Run em Program usando uma lambda ou um método
Onde consigo ConsoleAppFramework?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/Cysharp/ConsoleAppFramework

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados