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,