Frameworks CLI pour C# (.NET) : création d'applications console

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

Frameworks CLI pour C# (.NET) : création d'applications console professionnelles



Le développement moderne en C# (.NET) ne se limite pas aux applications web et aux programmes de bureau. Les applications console (CLI) restent très demandées pour l'automatisation, les outils DevOps, les utilitaires d'administration et les scripts internes. Cependant, l'analyse manuelle des arguments de ligne de commande est une tâche fastidieuse et sujette aux erreurs. Heureusement, des frameworks CLI spécialisés viennent à la rescousse, prenant en charge l'analyse des arguments, la génération d'aide, la validation et même l'affichage en couleurs.



Dans cet article, nous examinerons trois solutions open-source populaires pour créer des CLI en C# (.NET) : System.CommandLine (le package officiel de Microsoft), Spectre.Console et Cocona. Vous découvrirez leurs fonctionnalités clés, verrez des exemples de code et pourrez choisir l'outil adapté à votre projet.



1. System.CommandLine (Microsoft)



System.CommandLine est la bibliothèque officielle de Microsoft, conçue pour créer des applications console modernes avec une prise en charge riche de l'analyse des arguments, de la validation, de l'auto-complétion et de la génération d'aide. Elle est activement utilisée dans le SDK .NET et d'autres outils Microsoft.



Fonctionnalités principales :

  • Définition déclarative des commandes, options et arguments.
  • Génération automatique de l'aide (--help).
  • Prise en charge des middleware pour la gestion des erreurs et la journalisation.
  • Validation intégrée des types et des valeurs.
  • Possibilité d'intégration avec Dependency Injection.


Exemple de code :

using System.CommandLine;

var rootCommand = new RootCommand("Calculatrice CLI simple");

var argA = new Argument<int>("a", "Premier nombre");var argB = new Argument<int>("b", "Deuxième nombre");var optMultiply = new Option<bool>("--multiply", "Multiplier au lieu d'additionner");

rootCommand.AddArgument(argA);rootCommand.AddArgument(argB);rootCommand.AddOption(optMultiply);

rootCommand.SetHandler((int a, int b, bool multiply) =>{ int result = multiply ? a * b : a + b; Console.WriteLine($"Résultat : {result}");}, argA, argB, optMultiply);

await rootCommand.InvokeAsync(args);


Exécution : dotnet run -- 5 3 --multiply affichera Résultat : 15.



2. Spectre.Console



Spectre.Console n'est pas seulement un framework CLI, mais tout un écosystème pour créer des applications console belles et interactives. Il inclut l'analyse des arguments (via le package Spectre.Console.Cli), l'affichage en couleurs, les tableaux, les barres de progression, les calendriers et même des animations.



Fonctionnalités principales :

  • Définition déclarative des commandes avec des attributs.
  • Génération automatique de l'aide avec mise en forme colorée.
  • Prise en charge intégrée de DI et de validation.
  • Ensemble riche de widgets : tableaux, arbres, panneaux, calendriers.
  • Invites interactives (sélection dans une liste, confirmation, saisie de texte).


Exemple de code (commande avec attributs) :

using Spectre.Console;using Spectre.Console.Cli;

public class GreetCommand : Command<GreetSettings>{ public override int Execute(CommandContext context, GreetSettings settings) { AnsiConsole.MarkupLine($"[bold green]Bonjour, {settings.Name} ![/]"); if (settings.Repeat > 1) { AnsiConsole.MarkupLine($"[yellow]Répété {settings.Repeat} fois[/]"); } return 0; }}

public class GreetSettings : CommandSettings{ [CommandArgument(0, "[Name]")] public string Name { get; set; } = "Monde";

[CommandOption("-r|--repeat <N>")] public int Repeat { get; set; } = 1;}

// Dans Program.csvar app = new CommandApp<GreetCommand>();app.Run(args);


Dem

Recommendations