Skip to main content

add-cli-command

Add or change a dotnet CLI command, subcommand, or option across the relevant CLI projects. USE FOR: adding or changing a dotnet CLI command/subcommand, adding a new Option<T> or Argument<T>, registering a subcommand in the command tree, changing an option's help description or a command's runtime message, wiring a command parser, or updating --help output.

Quellinformationen

Repository
dotnet/sdk
Letzte Quellaktivität
9. Juli 2026 um 15:24
Erkannte Sprache von SKILL.md
Englisch
Sterne
3.221
Forks
1.298

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
add-cli-command
description
Add or change a dotnet CLI command, subcommand, or option across the relevant CLI projects. USE FOR: adding or changing a dotnet CLI command/subcommand, adding a new Option<T> or Argument<T>, registering a subcommand in the command tree, changing an option's help description or a command's runtime message, wiring a command parser, or updating --help output.
license
MIT
# Add or change a dotnet CLI command or option See [`references/file-map.md`](references/file-map.md) for the exact file map and the two-resx reference table. Read it before editing. ## Add an option to an existing command 1. **Declare** the option in `src/Cli/Microsoft.DotNet.Cli.Definitions/Commands/<Area>/<Name>CommandDefinition.cs`. Prefer a `CommonOptions` factory (`Common/CommonOptions.cs`) when one exists: ```csharp public readonly Option<bool> NoLogoOption = CommonOptions.CreateNoLogoOption(); // or, declared inline: public readonly Option<string> OutputOption = new Option<string>("--output", "-o") { Description = CommandDefinitionStrings.BuildOutputOptionDescription }; ``` Add it to the command in the constructor: `Options.Add(OutputOption);`. 2. **Consume** it in the managed implementation under `src/Cli/dotnet/Commands/<Area>/...` via `definition.OutputOption`; runtime messages come from `CliCommandStrings.<Key>`. 3. **Strings**: add the help description to `CommandDefinitionStrings.resx` and any runtime message to `CliCommandStrings.resx`, then regenerate the `.xlf` siblings. 4. **Test**: add parser/validation tests under `test/dotnet.Tests/CommandTests/<Area>/` and update any Verify help snapshots. ## Add a new command Everything above, plus: 1. Create `Commands/<Area>/<Name>CommandDefinition.cs` in the Definitions project. 2. Register it in the root tree (`Commands/DotNetCommandDefinition.cs` constructor): ```csharp Subcommands.Add(<Name>Command = new()); ``` 3. Create the managed implementation and a `<Name>CommandParser.cs` exposing `ConfigureCommand(...)` under `src/Cli/dotnet/Commands/<Name>/`. 4. Wire the parser in `src/Cli/dotnet/Parser.cs` `ConfigureManagedActions`: ```csharp <Name>CommandParser.ConfigureCommand(rootCommand.<Name>Command); ``` > **Native AOT:** a newly registered command already *runs* under Native AOT via the > managed fallback (the `dotnet-aot` host runs `dotnet.dll` through hostfxr), and its > parsing and `--help` reach the AOT CLI for free. Making the command execute > **in-process** in the native binary is separate, deliberate work — follow the > **add-dotnet-aot-command** skill when AOT support is required. ## Checklist - [ ] Option/command declared in `Definitions`, registered in its parent's constructor. - [ ] Managed behavior wired in `src/Cli/dotnet` and (for new commands) in `Parser.cs`. - [ ] Help description in `CommandDefinitionStrings.resx`; runtime message in `CliCommandStrings.resx`. - [ ] `.xlf` files regenerated via `/t:UpdateXlf` (not hand-edited), resx + xlf committed together. - [ ] No heavy dependency leaked into `Definitions`. - [ ] For in-process AOT execution, followed **add-dotnet-aot-command** (managed fallback applies otherwise). - [ ] Tests added/updated; Verify `*.verified.txt` snapshots promoted if CLI output changed.
Auf GitHub ansehen