C# | Building a Command-Line (CLI) App using System.CommandLine Library
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
1
2
dotnet new console -n MyCommandLineApp
cd MyCommandLineApp
Step 2: Add System.CommandLine NuGet Package
1
dotnet add package System.CommandLine --version 2.0.0-beta1.21308.1
Step 3: Define Command-Line Options
In your Program.cs
, define the command-line options using System.CommandLine
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
}
}
Step 4: Run the CLI App
1
dotnet run -- --number 42 --flag true "Hello, CLI!"
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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}");
});
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