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.

소스 정보

저장소
dotnet/sdk
최근 소스 활동
2026년 7월 9일 15:24
감지된 SKILL.md 언어
영어
스타
3,227
포크
1,300

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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.
GitHub에서 보기