DEV Community

Hassan BOLAJRAF
Hassan BOLAJRAF

Posted on

C# | Building a Command-Line (CLI) App using System.CommandLine Library

Note
You can check other posts on my personal website: https://hbolajraf.net

Introduction

In this guide, we will explore how to build a Command-Line Interface (CLI) application using the System.CommandLine library in C# and .NET. System.CommandLine simplifies the process of creating robust and feature-rich command-line interfaces for your applications.

Prerequisites

Before getting started, make sure you have the following installed:

  • .NET SDK (version 5.0 or later)

Step 1: Create a new Console Application

dotnet new console -n MyCommandLineApp
cd MyCommandLineApp
Enter fullscreen mode Exit fullscreen mode

Step 2: Add System.CommandLine NuGet Package

dotnet add package System.CommandLine --version 2.0.0-beta1.21308.1
Enter fullscreen mode Exit fullscreen mode

Step 3: Define Command-Line Options

In your Program.cs, define the command-line options using System.CommandLine:

using System.CommandLine;
using System.CommandLine.Invocation;

class Program
{
    static int Main(string[] args)
    {
        var rootCommand = new RootCommand
        {
            new Option<int>("--number", "An integer option"),
            new Option<bool>("--flag", "A boolean option"),
            new Argument<string>("input", "A required input argument")
        };

        rootCommand.Handler = CommandHandler.Create<int, bool, string>((number, flag, input) =>
        {
            // Your application logic goes here
            Console.WriteLine($"Number: {number}");
            Console.WriteLine($"Flag: {flag}");
            Console.WriteLine($"Input: {input}");
        });

        return rootCommand.Invoke(args);
    }
}
Enter fullscreen mode Exit fullscreen mode

Step 4: Run the CLI App

dotnet run -- --number 42 --flag true "Hello, CLI!"
Enter fullscreen mode Exit fullscreen mode

Replace the values with your own and see the output.

Step 5: Customize Help Text

Add descriptions to your options and arguments for better help text:

var rootCommand = new RootCommand
{
    new Option<int>("--number", "An integer option"),
    new Option<bool>("--flag", "A boolean option"),
    new Argument<string>("input", "A required input argument")
};

rootCommand.Description = "A simple CLI app";
rootCommand.Handler = CommandHandler.Create<int, bool, string>((number, flag, input) =>
{
    Console.WriteLine($"Number: {number}");
    Console.WriteLine($"Flag: {flag}");
    Console.WriteLine($"Input: {input}");
});
Enter fullscreen mode Exit fullscreen mode

What Next?

You have successfully created a basic Command-Line Interface (CLI) application using the System.CommandLine library in C# and .NET. Customize and extend the application based on your specific requirements.
For more information, refer to the official documentation: System.CommandLine GitHub

Top comments (0)