CommandDotNet alternatives and similar packages
Based on the "CLI" category.
Alternatively, view CommandDotNet alternatives based on common mentions on social networks and blogs.
-
Command Line Parser
The best C# command line parser that brings standardized *nix getopt style, for .NET. Includes F# support -
Fluent Command Line Parser
A simple, strongly typed .NET C# command line parser library using a fluent easy to use interface -
DotMake Command-Line
Declarative syntax for System.CommandLine via attributes for easy, fast, strongly-typed (no reflection) usage. Includes a source generator which automagically converts your classes to CLI commands and properties to CLI options or CLI arguments. -
NFlags
Simple yet powerfull library to made parsing CLI arguments easy. Library also allow to print usage help "out of box". -
DarkXaHTeP.CommandLine
Allows creating CommandLine applications using Microsoft.Extensions.CommandLineUtils together with DI, Configuration and Logging in a convenient way similar to AspNetCore Hosting -
Tamar.ANSITerm
“ANSITerm” provides ANSI escape codes and true color formatting for .NET Core's Console on Linux terminals.
CodeRabbit: AI Code Reviews for Developers
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of CommandDotNet or a related project?
README
CommandDotNet
A modern framework for building modern CLI apps
Out of the box support for commands, sub-commands, validations, dependency injection, piping and streaming, enums & custom types, typo suggestions, prompting, passwords, response files and much more! See the features page.
Favors POSIX conventions
Includes [test tools](TestTools/overview.md) used by the framework to test all features of the framework.
Modify and extend the functionality of the framework through configuration and middleware.
Documentation 👉 https://commanddotnet.bilal-fazlani.com
Project Status
This project is stable. Lack of new features are a result of the maturity of the library, not an indication of the liveliness of this project. We are available to fix bugs and answer questions and remain fairly responsive. There are PRs and issues in the backlog for new features that are currently low priority for the maintainers. We will accept PRs. If you haven't discussed them with us first and the change is significant, please consider the submission the beginning of a design discussion.
Support
For bugs, create an issue
For questions and feature requests, start a discussion
For a quick walkthrough of features, see our Getting Started guides
Here's a starter:
Example
Begin by creating the commands:
<!-- snippet: getting-started-100-calculator -->
public class Program
{
// this is the entry point of your application
static int Main(string[] args)
{
// AppRunner<T> where T is the class defining your commands
// You can use Program or create commands in another class
return new AppRunner<Program>().Run(args);
}
// Add command with two positional arguments
public void Add(int x, int y) => Console.WriteLine(x + y);
// Subtract command with two positional arguments
public void Subtract(int x, int y) => Console.WriteLine(x - y);
}
snippet source | anchor <!-- endSnippet -->
That's it. You now have an application with two commands. Let's see about how we can call it from command line.
Assuming our application's name is calculator.dll
, let's run this app from command line using dotnet.
First we'll check out the auto-generated help.
<!-- snippet: getting-started-100-calculator-help -->
$ dotnet calculator.dll --help
Usage: dotnet calculator.dll [command]
Commands:
Add
Subtract
Use "dotnet calculator.dll [command] --help" for more information about a command.
snippet source | anchor <!-- endSnippet -->
From the root we can see the available commands. Instead of --help
we could have used -h
or -?
.
We'll use -h
to get help for the Add command.
<!-- snippet: getting-started-100-calculator-add-help -->
$ dotnet calculator.dll Add -h
Usage: dotnet calculator.dll Add <x> <y>
Arguments:
x <NUMBER>
y <NUMBER>
snippet source | anchor <!-- endSnippet -->
Let's try it out by adding two numbers
<!-- snippet: getting-started-100-calculator-add -->
$ dotnet calculator.dll Add 40 20
60
snippet source | anchor <!-- endSnippet -->
CommandDotNet will validate if the arguments can be converted to the correct type.
<!-- snippet: getting-started-100-calculator-add-invalid -->
$ dotnet calculator.dll Add a 20
'a' is not a valid Number
snippet source | anchor <!-- endSnippet -->
Check out the docs for more examples
See our Getting Started guides to see how to improve the help documentation, test the application and utilize the many other features of CommandDotNet.
Credits 🎉
Special thanks to Drew Burlingame for continuous support and contributions
*Note that all licence references and agreements mentioned in the CommandDotNet README section above
are relevant to that project's source code only.