Spectre.Console para C# (.NET): guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Spectre.Console para C# (.NET): Guía completa

Spectre.Console es una potente librería para .NET que transforma la salida estándar de la consola en algo visualmente atractivo e interactivo. Permite a los desarrolladores de C# crear interfaces de línea de comandos (CLI) hermosas, estructuradas e informativas con el mínimo esfuerzo. En lugar de texto monocromático y aburrido, obtienes soporte para colores, tablas, árboles, barras de progreso, gráficos e incluso indicaciones interactivas.

¿Para qué sirve Spectre.Console? En el desarrollo moderno, las aplicaciones de consola se utilizan a menudo para herramientas DevOps, scripts de automatización, análisis de datos y utilidades. Los usuarios esperan no solo funcionalidad, sino también comodidad. Spectre.Console resuelve el problema de la salida "plana", haciendo que los registros sean claros y la interacción con la aplicación sea agradable. Es especialmente útil para crear herramientas CLI profesionales donde la legibilidad y la jerarquía visual de los datos son importantes.

La librería se basa en principios de composición y ofrece un rico conjunto de "widgets" que se pueden combinar. Cuenta con un sólido respaldo de la comunidad, documentación detallada y se utiliza en proyectos importantes como Cake Build, NuGet Client y .NET SDK. Si programas en C# y quieres que tu utilidad de consola luzca como una herramienta moderna, y no como una reliquia de los 80, Spectre.Console es tu mejor opción.

Instalación

Spectre.Console se distribuye a través de NuGet. Para instalarlo, ejecuta uno de los siguientes comandos en la terminal o en la consola del administrador de paquetes:

# A través de .NET CLI
dotnet add package Spectre.Console

# A través de Package Manager Console (Visual Studio)
Install-Package Spectre.Console

# O a través del Administrador de paquetes NuGet en tu IDE

Después de la instalación, añade using Spectre.Console; al inicio de tu archivo de código.

Inicio rápido

Un ejemplo mínimo funcional que demuestra las capacidades principales:

using Spectre.Console;

// Mensaje de color simple
AnsiConsole.MarkupLine("[bold green]¡Hola, Spectre.Console![/]");

// Tabla
var table = new Table();
table.AddColumn("Nombre");
table.AddColumn("Edad");
table.AddRow("Ana", "30");
table.AddRow("Carlos", "25");
AnsiConsole.Write(table);

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

Este código mostrará un saludo en color, una tabla con datos y una barra de progreso animada.

Métodos, funciones y clases principales

1. AnsiConsole.MarkupLine

Firma: public static void MarkupLine(string markup)

Qué hace: Muestra una cadena con soporte de marcado (markup) para estilizar texto (colores, estilos, enlaces).

AnsiConsole.MarkupLine("[bold yellow]¡Atención![/] [red]Error[/] en la línea [underline]42[/].");

2. AnsiConsole.Progress

Firma: public static Progress Display(ProgressContext context) (a través de fluent API)

Qué hace: Crea y muestra una barra de progreso interactiva con la posibilidad de añadir múltiples tareas.

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

3. Table

Firma: public class Table : Renderable,

Recommendations