Spectre.Console para C# (.NET): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Spectre.Console para C# (.NET): Guia Completo

Spectre.Console é uma biblioteca poderosa para .NET que transforma a saída comum do console em algo visualmente atraente e interativo. Ela permite que desenvolvedores C# criem interfaces de linha de comando (CLI) bonitas, estruturadas e informativas com o mínimo de esforço. Em vez de um texto monocromático e sem graça, você obtém suporte a cores, tabelas, árvores, barras de progresso, gráficos e até prompts interativos.

Por que usar Spectre.Console? No desenvolvimento moderno, aplicativos de console são frequentemente usados para ferramentas de DevOps, scripts de automação, análise de dados e utilitários. Os usuários esperam não apenas funcionalidade, mas também usabilidade. O Spectre.Console resolve o problema da saída "crua", tornando os logs compreensíveis e a interação com o aplicativo agradável. É especialmente útil para criar ferramentas CLI profissionais, onde a legibilidade e a hierarquia visual dos dados são importantes.

A biblioteca é construída com base em princípios de composição e oferece um rico conjunto de "widgets" que podem ser combinados. Ela é ativamente mantida pela comunidade, possui documentação detalhada e é usada em grandes projetos como Cake Build, NuGet Client e .NET SDK. Se você programa em C# e quer que seu utilitário de console pareça uma ferramenta moderna, e não uma relíquia dos anos 80 — Spectre.Console é a sua escolha.

Instalação

O Spectre.Console é distribuído via NuGet. Para instalar, execute um dos seguintes comandos no terminal ou no Console do Gerenciador de Pacotes:

# Via .NET CLI
dotnet add package Spectre.Console

# Via Package Manager Console (Visual Studio)
Install-Package Spectre.Console

# Ou via NuGet Package Manager na sua IDE

Após a instalação, adicione using Spectre.Console; no início do seu arquivo de código.

Início Rápido

Um exemplo mínimo funcional demonstrando os principais recursos:

using Spectre.Console;

// Mensagem colorida simples
AnsiConsole.MarkupLine("[bold green]Olá, Spectre.Console![/]");

// Tabela
var table = new Table();
table.AddColumn("Nome");
table.AddColumn("Idade");
table.AddRow("Alice", "30");
table.AddRow("Bob", "25");
AnsiConsole.Write(table);

// Barra de progresso
AnsiConsole.Progress()
    .Start(ctx =>
    {
        var task = ctx.AddTask("[yellow]Processando...[/]");
        while (!task.IsFinished)
        {
            task.Increment(15);
            Thread.Sleep(200);
        }
    });

Este código exibirá uma saudação colorida, uma tabela com dados e uma barra de progresso animada.

Principais Métodos, Funções e Classes

1. AnsiConsole.MarkupLine

Assinatura: public static void MarkupLine(string markup)

O que faz: Exibe uma string com suporte a marcação (markup) para estilizar texto (cores, estilos, links).

AnsiConsole.MarkupLine("[bold yellow]Atenção![/] [red]Erro[/] na linha [underline]42[/].");

2. AnsiConsole.Progress

Assinatura: public static Progress Display(ProgressContext context) (via fluent API)

O que faz: Cria e exibe uma barra de progresso interativa com suporte a múltiplas tarefas.

AnsiConsole.Progress()
    .Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn())
    .Start(ctx =>
    {
        var task1 = ctx.AddTask("[green]Baixando arquivo 1[/]");
        var task2 = ctx.AddTask("[blue]Baixando arquivo 2[/]");
        while (!task1.IsFinished || !task2.IsFinished)
        {
            task1.Increment(5);
            task2.Increment(3);
            Thread.Sleep(100);
        }
    });

3. Table

Assinatura: public class Table : Renderable,

Recommendations