Spectre.Console für C# (.NET): Das komplette Tutorial
Spectre.Console ist eine leistungsstarke .NET-Bibliothek, die gewöhnliche Konsolenausgaben in visuell ansprechende und interaktive Erlebnisse verwandelt. Sie ermöglicht C#-Entwicklern, schöne, strukturierte und informative Kommandozeilen-Oberflächen (CLI) mit minimalem Aufwand zu erstellen. Statt langweiligem, monochromem Text erhalten Sie Unterstützung für Farben, Tabellen, Bäume, Fortschrittsbalken, Diagramme und sogar interaktive Eingabeaufforderungen.
Warum Spectre.Console? In der modernen Entwicklung werden Konsolenanwendungen häufig für DevOps-Tools, Automatisierungsskripte, Datenanalyse und Dienstprogramme eingesetzt. Nutzer erwarten dabei nicht nur Funktionalität, sondern auch Benutzerfreundlichkeit. Spectre.Console löst das Problem der "nackten" Ausgabe, macht Logs verständlicher und die Interaktion mit der Anwendung angenehmer. Besonders nützlich ist sie für professionelle CLI-Tools, bei denen Lesbarkeit und visuelle Hierarchie der Daten wichtig sind.
Die Bibliothek basiert auf dem Prinzip der Komposition und bietet eine Vielzahl von "Widgets", die kombiniert werden können. Sie wird von der Community aktiv unterstützt, verfügt über eine ausführliche Dokumentation und kommt in großen Projekten wie Cake Build, NuGet Client und dem .NET SDK zum Einsatz. Wenn Sie in C# entwickeln und Ihre Konsolenanwendung wie ein modernes Tool aussehen soll – Spectre.Console ist die richtige Wahl.
Installation
Spectre.Console wird über NuGet verteilt. Führen Sie einen der folgenden Befehle im Terminal oder in der Paket-Manager-Konsole aus:
# Über .NET CLI
dotnet add package Spectre.Console
# Über Package Manager Console (Visual Studio)
Install-Package Spectre.Console
# Oder über den NuGet Package Manager in Ihrer IDE
Fügen Sie nach der Installation using Spectre.Console; am Anfang Ihrer Codedatei hinzu.
Schnellstart
Ein minimales Arbeitsbeispiel, das die grundlegenden Funktionen demonstriert:
using Spectre.Console;
// Einfache farbige Nachricht
AnsiConsole.MarkupLine("[bold green]Hallo, Spectre.Console![/]");
// Tabelle
var table = new Table();
table.AddColumn("Name");
table.AddColumn("Alter");
table.AddRow("Anna", "30");
table.AddRow("Ben", "25");
AnsiConsole.Write(table);
// Fortschrittsbalken
AnsiConsole.Progress()
.Start(ctx =>
{
var task = ctx.AddTask("[yellow]Verarbeitung...[/]");
while (!task.IsFinished)
{
task.Increment(15);
Thread.Sleep(200);
}
});
Dieser Code gibt eine farbige Begrüßung, eine Tabelle mit Daten und einen animierten Fortschrittsbalken aus.
Wichtige Methoden, Funktionen und Klassen
1. AnsiConsole.MarkupLine
Signatur: public static void MarkupLine(string markup)
Funktion: Gibt eine Zeichenkette mit Markup-Unterstützung zur Textgestaltung aus (Farben, Stile, Links).
AnsiConsole.MarkupLine("[bold yellow]Achtung![/] [red]Fehler[/] in Zeile [underline]42[/].");
2. AnsiConsole.Progress
Signatur: public static Progress Display(ProgressContext context) (über Fluent-API)
Funktion: Erstellt und zeigt einen interaktiven Fortschrittsbalken mit der Möglichkeit, mehrere Aufgaben hinzuzufügen.
AnsiConsole.Progress()
.Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn())
.Start(ctx =>
{
var task1 = ctx.AddTask("[green]Datei 1 laden[/]");
var task2 = ctx.AddTask("[blue]Datei 2 laden[/]");
while (!task1.IsFinished || !task2.IsFinished)
{
task1.Increment(5);
task2.Increment(3);
Thread.Sleep(100);
}
});
3. Table
Signatur: public class Table : Renderable
Auch in der Bibliothek
Testen in JavaScript (Node.js): Frameworks und Werkzeuge
Aufgabenwarteschlangen in Go (Golang): Die besten Bibliotheken und Werkzeuge
JWT-Token in Go (Golang): Bibliothek golang-jwt und Anwendungsbeispiele
awilix für TypeScript: Vollständiges Guide mit Beispielen
Aufgabenwarteschlangen in C# (.NET): System.Threading.Channels, Hangfire und RabbitMQ