Build command-line apps in .NET with plain classes. Mark a class as a command, add options and arguments as properties, then run it.
- Targets:
net6.0throughnet10.0· AOT-ready onnet8.0+ · Trimmable - Packages:
Microsoft.Extensions.Hosting,Microsoft.Extensions.DependencyInjection.Abstractions,AbsolutePathHelpers
- Commands with automatic parsing. You write a class. The library reads the arguments.
- Services in your command. Ask for a service. The library provides it.
- Shared setup modules. Group common services once. Reuse them in every app.
- App settings that reuse another key with
@ref:— see Configuration. - Command markers:
[Command],[CommandOption],[CommandArgument]. - Subcommands like
deploy prod. Nest as deep as you need. - Styled
--helpwith 6 color themes and adjustable width. - Console and web hosts. Use the default for CLIs. Plug in your own for servers.
dotnet add package ApplicationBuilderHelpersNew here? Follow Getting Started for a full Hello sample. It prints Hello, Alice! and exits 0. Prefer a full starter app? See Starter Templates.
RunAsync returns an exit code: 0 success, 2 bad input, 1 failure, 130 canceled. See Commands.
Extend Command and override Run. Add options with [CommandOption] and positionals with [CommandArgument]. Put shared setup in Application Dependencies.
Exit codes: 0 means success, 2 means bad input, 1 means failure, 130 means canceled. See API Reference.
Shared setup → Command → Host build → Services → Your Run method
- You register commands and shared setup modules.
- The library builds the host once per run.
- The library fills your options, arguments, and services.
- Your
Runmethod executes.
The full order of the 8 shared setup steps lives in Application Dependencies.
| Guide | Covers |
|---|---|
| Getting Started | Install, minimal app, first command, run it |
| Starter Templates | Copy-only Plain CLI, WebApi, or WebApiAndWebApp starter |
| Commands | Commands, options, arguments, services, completion |
| Application Dependencies | Shared setup modules |
| Configuration & Themes | App name, help width, themes, @ref: settings |
| Custom Type Parsers | Support your own option types |
| Advanced Topics | Subcommands, web hosts, errors, help |
| API Reference | Every public class and method |
Secret values stay hidden. Help, errors, and completions never print them.
Contributions are welcome! Please submit a Pull Request.
MIT — see the LICENSE file.