Spectre.Console C# (.NET) : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Spectre.Console pour C# (.NET) : Guide complet

Spectre.Console est une bibliothèque .NET puissante qui transforme une sortie console ordinaire en quelque chose de visuellement attrayant et interactif. Elle permet aux développeurs C# de créer facilement des interfaces en ligne de commande (CLI) belles, structurées et informatives. Fini le texte monochrome ennuyeux : vous bénéficiez de la prise en charge des couleurs, des tableaux, des arbres, des barres de progression, des graphiques et même des invites interactives.

Pourquoi utiliser Spectre.Console ? Dans le développement moderne, les applications console sont souvent utilisées pour les outils DevOps, les scripts d'automatisation, l'analyse de données et les utilitaires. Les utilisateurs attendent non seulement des fonctionnalités, mais aussi du confort. Spectre.Console résout le problème de la sortie « brute » en rendant les journaux clairs et l'interaction avec l'application agréable. Elle est particulièrement utile pour créer des outils CLI professionnels où la lisibilité et la hiérarchie visuelle des données sont essentielles.

La bibliothèque est construite sur des principes de composition et offre un riche ensemble de « widgets » que vous pouvez combiner. Elle est activement maintenue par la communauté, dispose d'une documentation détaillée et est utilisée dans des projets majeurs comme Cake Build, NuGet Client et le SDK .NET. Si vous codez en C# et souhaitez que votre utilitaire console ressemble à un outil moderne plutôt qu'à une relique des années 80, Spectre.Console est le choix idéal.

Installation

Spectre.Console est distribuée via NuGet. Pour l'installer, exécutez l'une des commandes suivantes dans votre terminal ou la console du gestionnaire de packages :

# Via .NET CLI
dotnet add package Spectre.Console

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

# Ou via le gestionnaire de packages NuGet dans votre IDE

Après l'installation, ajoutez using Spectre.Console; en haut de votre fichier de code.

Démarrage rapide

Un exemple minimal fonctionnel illustrant les fonctionnalités de base :

using Spectre.Console;

// Message coloré simple
AnsiConsole.MarkupLine("[bold green]Bonjour, Spectre.Console ![/]");

// Tableau
var table = new Table();
table.AddColumn("Nom");
table.AddColumn("Âge");
table.AddRow("Alice", "30");
table.AddRow("Bob", "25");
AnsiConsole.Write(table);

// Barre de progression
AnsiConsole.Progress()
    .Start(ctx =>
    {
        var task = ctx.AddTask("[yellow]Traitement en cours...[/]");
        while (!task.IsFinished)
        {
            task.Increment(15);
            Thread.Sleep(200);
        }
    });

Ce code affiche un message coloré, un tableau de données et une barre de progression animée.

Méthodes, fonctions et classes principales

1. AnsiConsole.MarkupLine

Signature : public static void MarkupLine(string markup)

Fonction : Affiche une chaîne avec prise en charge du balisage (markup) pour styliser le texte (couleurs, styles, liens).

AnsiConsole.MarkupLine("[bold yellow]Attention ![/] [red]Erreur[/] à la ligne [underline]42[/].");

2. AnsiConsole.Progress

Signature : public static Progress Display(ProgressContext context) (via l'API fluent)

Fonction : Crée et affiche une barre de progression interactive avec possibilité d'ajouter plusieurs tâches.

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

3. Table

Signature : public class Table : Renderable,

Recommendations