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,