{
  "id": "dotnet",
  "name": ".NET CLI",
  "homepage": "https://learn.microsoft.com/en-us/dotnet/core/tools/",
  "description": "The .NET command-line interface (CLI) is a cross-platform toolchain for developing, building, running, and publishing .NET applications.",
  "icon": "SimpleIcons:dotnet",
  "executables": [
    "dotnet"
  ],
  "dotfiles": {
    "paths": [
      "~/.nuget/NuGet/NuGet.Config",
      "%APPDATA%/NuGet/NuGet.Config"
    ],
    "exclude": [
      "~/.nuget/packages/",
      "~/.dotnet/"
    ],
    "secret": [],
    "side_effect": false,
    "secret_paths": [
      {
        "file": [
          "~/.nuget/NuGet/NuGet.Config",
          "%APPDATA%/NuGet/NuGet.Config"
        ],
        "match": {
          "prefix": [
            "<add key=\"ClearTextPassword\"",
            "<add key=\"Password\""
          ]
        }
      }
    ],
    "machine_lines": [
      {
        "file": [
          "~/.nuget/NuGet/NuGet.Config",
          "%APPDATA%/NuGet/NuGet.Config"
        ],
        "match": {
          "prefix": [
            "<add key=\"globalPackagesFolder\"",
            "<add key=\"repositoryPath\""
          ]
        },
        "scope": "backup"
      }
    ]
  },
  "commands": {
    "format": 1,
    "label": ".NET CLI",
    "description": "Build, run, test and create .NET projects. Flags come from dotnet <command> -h; other commands are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "source": [
      {
        "id": "help-build",
        "kind": "help",
        "revision": ".NET SDK 10.0.401 (dotnet build -h)",
        "evidence": "Description:\n  .NET Builder\n\nUsage:\n  dotnet build [<PROJECT | SOLUTION | FILE>...] [options]\n\nArguments:\n  <PROJECT | SOLUTION | FILE>  The project or solution or C# (file-based\n                               program) file to operate on. If a file is not\n                               specified, the command will search the current\n                               directory for a project or solution.\n\nOptions:\n  --ucr, --use-current-runtime         Use current runtime as the target\n                                       runtime. [default: False]\n  -f, --framework <FRAMEWORK>          The target framework to build for. The\n                                       target framework must also be specified\n                                       in the project file.\n  -c, --configuration <CONFIGURATION>  The configuration to use for building\n                                       the project. The default for most\n                                       projects is 'Debug'.\n  --version-suffix <VERSION_SUFFIX>    Set the value of the $(VersionSuffix)\n                                       property to use when building the\n                                       project.\n  --no-restore                         Do not restore the project before\n                                       building. [default: False]\n  --interactive                        Allows the command to stop and wait for\n                                       user input or action (for example to\n                                       complete authentication). [default:\n                                       False]\n  -v, -verbosity <LEVEL>               Set the MSBuild verbosity level. Allowed\n                                       values are q[uiet], m[inimal], n[ormal],\n                                       d[etailed], and diag[nostic].\n  -o, --output <OUTPUT_DIR>            The output directory to place built\n                                       artifacts in.\n  --artifacts-path <ARTIFACTS_DIR>     The artifacts path. All output from the\n                                       project, including build, publish, and\n                                       pack output, will go in subfolders under\n                                       the specified path.\n  --no-incremental                     Do not use incremental building.\n                                       [default: False]\n  --no-dependencies                    Do not build project-to-project\n                                       references and only build the specified\n                                       project. [default: False]\n  -nologo, --no-logo                   Do not display the startup banner or the\n                                       copyright message. [default: True]\n  --sc, --self-contained               Publish the .NET runtime with your\n                                       application so the runtime doesn't need\n                                       to be installed on the target machine.\n                                       The default is 'false.' However, when\n                                       targeting .NET 7 or lower, the default\n                                       is 'true' if a runtime identifier is\n                                       specified. [default: False]\n  --no-self-contained                  Publish your application as a framework\n                                       dependent application. A compatible .NET\n                                       runtime must be installed on the target\n                                       machine to run your application.\n                                       [default: False]\n  -r, --runtime <RUNTIME_IDENTIFIER>   The target runtime to build for.\n  -a, --arch <ARCH>                    The target architecture.\n  --os <OS>                            The target operating system.\n  --disable-build-servers              Force the command to ignore any\n                                       persistent build servers. [default:\n                                       False]\n  -?, -h, --help                       Show command line help.\n\n"
      },
      {
        "id": "help-run",
        "kind": "help",
        "revision": ".NET SDK 10.0.401 (dotnet run -h)",
        "evidence": "Description:\n  .NET Run Command\n\nUsage:\n  dotnet run [<applicationArguments>...] [options]\n\nArguments:\n  <applicationArguments>  Arguments passed to the application that is being\n                          run. []\n\nOptions:\n  -c, --configuration <CONFIGURATION>     The configuration to run for. The\n                                          default for most projects is 'Debug'.\n  -f, --framework <FRAMEWORK>             The target framework to run for. The\n                                          target framework must also be\n                                          specified in the project file.\n  --project <PROJECT_PATH>                Defines the path of the project file\n                                          to run. Use path to the project file,\n                                          or path to the directory containing\n                                          the project file. If not specified,\n                                          it defaults to the current directory.\n  --file <FILE_PATH>                      The path to the file-based app to run\n                                          (can be also passed as the first\n                                          argument if there is no project in\n                                          the current directory).\n  -lp, --launch-profile <LAUNCH_PROFILE>  The name of the launch profile (if\n                                          any) to use when launching the\n                                          application.\n  --no-launch-profile                     Do not attempt to use\n                                          launchSettings.json or [app].run.json\n                                          to configure the application.\n                                          [default: False]\n  --device <DEVICE>                       The device identifier to use for\n                                          running the application.\n  --list-devices                          List available devices for running\n                                          the application. [default: False]\n  --no-build                              Do not build the project before\n                                          running. Implies --no-restore.\n                                          [default: False]\n  --interactive                           Allows the command to stop and wait\n                                          for user input or action (for example\n                                          to complete authentication).\n                                          [default: False]\n  --no-restore                            Do not restore the project before\n                                          building. [default: False]\n  --no-cache                              Skip up to date checks and always\n                                          build the program before running.\n                                          [default: False]\n  --sc, --self-contained                  Publish the .NET runtime with your\n                                          application so the runtime doesn't\n                                          need to be installed on the target\n                                          machine.\n                                          The default is 'false.' However, when\n                                          targeting .NET 7 or lower, the\n                                          default is 'true' if a runtime\n                                          identifier is specified. [default:\n                                          False]\n  --no-self-contained                     Publish your application as a\n                                          framework dependent application. A\n                                          compatible .NET runtime must be\n                                          installed on the target machine to\n                                          run your application. [default:\n                                          False]\n  -v, -verbosity <LEVEL>                  Set the MSBuild verbosity level.\n                                          Allowed values are q[uiet],\n                                          m[inimal], n[ormal], d[etailed], and\n                                          diag[nostic].\n  -r, --runtime <RUNTIME_IDENTIFIER>      The target runtime to run for.\n  -a, --arch <ARCH>                       The target architecture.\n  --os <OS>                               The target operating system.\n  --disable-build-servers                 Force the command to ignore any\n                                          persistent build servers. [default:\n                                          False]\n  --artifacts-path <ARTIFACTS_DIR>        The artifacts path. All output from\n                                          the project, including build,\n                                          publish, and pack output, will go in\n                                          subfolders under the specified path.\n  -e, --environment <NAME=\"VALUE\">        Sets the value of an environment\n                                          variable.\n                                          Creates the variable if it does not\n                                          exist, overrides if it does.\n                                          This argument can be specified\n                                          multiple times to provide multiple\n                                          variables.\n\n                                          Examples:\n                                          -e VARIABLE=abc\n                                          -e VARIABLE=\"value with spaces\"\n                                          -e VARIABLE=\"value;seperated\n                                          with;semicolons\"\n                                          -e VAR1=abc -e VAR2=def -e VAR3=ghi\n  -?, -h, --help                          Show command line help.\n\n"
      },
      {
        "id": "help-test",
        "kind": "help",
        "revision": ".NET SDK 10.0.401 (dotnet test -h)",
        "evidence": "Description:\n  .NET Test Command for VSTest. To use Microsoft.Testing.Platform, opt-in to\n  the Microsoft.Testing.Platform-based command via global.json. For more\n  information, see https://aka.ms/dotnet-test.\n\nUsage:\n  dotnet test [options] [[--] <additional arguments>...]]\n\nOptions:\n  -s, --settings <SETTINGS_FILE>       The settings file to use when running\n                                       tests.\n  -t, --list-tests                     List the discovered tests instead of\n                                       running the tests. [default: False]\n  -e, --environment <NAME=\"VALUE\">     Sets the value of an environment\n                                       variable.\n                                       Creates the variable if it does not\n                                       exist, overrides if it does.\n                                       This will force the tests to be run in\n                                       an isolated process.\n                                       This argument can be specified multiple\n                                       times to provide multiple variables.\n\n                                       Examples:\n                                       -e VARIABLE=abc\n                                       -e VARIABLE=\"value with spaces\"\n                                       -e VARIABLE=\"value;seperated\n                                       with;semicolons\"\n                                       -e VAR1=abc -e VAR2=def -e VAR3=ghi\n  --filter <EXPRESSION>                Run tests that match the given\n                                       expression.\n\n                                       Examples:\n\n                                       Run tests with priority set to 1:\n                                       --filter \"Priority = 1\"\n\n                                       Run a test with the specified full name:\n                                       --filter\n                                       \"FullyQualifiedName=Namespace.ClassName.M\n                                       ethodName\"\n\n                                       Run tests that contain the specified\n                                       name: --filter\n                                       \"FullyQualifiedName~Namespace.Class\"\n\n                                       See https://aka.ms/vstest-filtering for\n                                       more information on filtering support.\n  --test-adapter-path <ADAPTER_PATH>   The path to the custom adapters to use\n                                       for the test run.\n  -l, --logger <LOGGER>                The logger to use for test results.\n\n                                       Examples:\n\n                                       Log in trx format using a unique file\n                                       name: --logger trx\n\n                                       Log in trx format using the specified\n                                       file name: --logger\n                                       \"trx;LogFileName=<TestResults.trx>\"\n\n                                       See https://aka.ms/vstest-report for\n                                       more information on logger arguments.\n  -o, --output <OUTPUT_DIR>            The output directory to place built\n                                       artifacts in.\n  --artifacts-path <ARTIFACTS_DIR>     The artifacts path. All output from the\n                                       project, including build, publish, and\n                                       pack output, will go in subfolders under\n                                       the specified path.\n  -d, --diag <LOG_FILE>                Enable verbose logging to the specified\n                                       file.\n  --no-build                           Do not build the project before testing.\n                                       Implies --no-restore. [default: False]\n  --results-directory <RESULTS_DIR>    The directory where the test results\n                                       will be placed.\n                                       The specified directory will be created\n                                       if it does not exist.\n  --collect <DATA_COLLECTOR_NAME>      The friendly name of the data collector\n                                       to use for the test run.\n\n                                       More info here:\n                                       https://aka.ms/vstest-collect\n  --blame                              Runs the tests in blame mode. This\n                                       option is helpful in isolating\n                                       problematic tests that cause the test\n                                       host to crash or hang, but it does not\n                                       create a memory dump by default.\n\n                                       When a crash is detected, it creates an\n                                       sequence file in\n                                       TestResults/guid/guid_Sequence.xml that\n                                       captures the order of tests that were\n                                       run before the crash.\n\n                                       Based on the additional settings, hang\n                                       dump or crash dump can also be\n                                       collected.\n\n                                       Example:\n                                         Timeout the test run when test takes\n                                       more than the default timeout of 1 hour,\n                                       and collect crash dump when the test\n                                       host exits unexpectedly.\n                                         (Crash dumps require additional setup,\n                                       see below.)\n                                         dotnet test --blame-hang --blame-crash\n                                       Example:\n                                         Timeout the test run when a test takes\n                                       more than 20 minutes and collect hang\n                                       dump.\n                                         dotnet test --blame-hang-timeout 20min\n                                        [default: False]\n  --blame-crash                        Runs the tests in blame mode and\n                                       collects a crash dump when the test host\n                                       exits unexpectedly. This option depends\n                                       on the version of .NET used, the type of\n                                       error, and the operating system.\n\n                                       For exceptions in managed code, a dump\n                                       will be automatically collected on .NET\n                                       5.0 and later versions. It will generate\n                                       a dump for testhost or any child process\n                                       that also ran on .NET 5.0 and crashed.\n                                       Crashes in native code will not generate\n                                       a dump. This option works on Windows,\n                                       macOS, and Linux.\n\n                                       Crash dumps in native code, or when\n                                       targetting .NET Framework, or .NET Core\n                                       3.1 and earlier versions, can only be\n                                       collected on Windows, by using Procdump.\n                                       A directory that contains procdump.exe\n                                       and procdump64.exe must be in the PATH\n                                       or PROCDUMP_PATH environment variable.\n\n                                       The tools can be downloaded here:\n                                       https://docs.microsoft.com/sysinternals/d\n                                       ownloads/procdump\n\n                                       To collect a crash dump from a native\n                                       application running on .NET 5.0 or\n                                       later, the usage of Procdump can be\n                                       forced by setting the\n                                       VSTEST_DUMP_FORCEPROCDUMP environment\n                                       variable to 1.\n\n                                       Implies --blame. [default: False]\n  --blame-crash-dump-type <DUMP_TYPE>  The type of crash dump to be collected.\n                                       Supported values are full (default) and\n                                       mini. Implies --blame-crash.\n  --blame-crash-collect-always         Enables collecting crash dump on\n                                       expected as well as unexpected testhost\n                                       exit. [default: False]\n  --blame-hang                         Run the tests in blame mode and enables\n                                       collecting hang dump when test exceeds\n                                       the given timeout. [default: False]\n  --blame-hang-dump-type <DUMP_TYPE>   The type of crash dump to be collected.\n                                       The supported values are full (default),\n                                       mini, and none. When 'none' is used then\n                                       test host is terminated on timeout, but\n                                       no dump is collected. Implies\n                                       --blame-hang.\n  --blame-hang-timeout <TIMESPAN>      Per-test timeout, after which hang dump\n                                       is triggered and the testhost process is\n                                       terminated. Default is 1h.\n                                       The timeout value is specified in the\n                                       following format: 1.5h / 90m / 5400s /\n                                       5400000ms. When no unit is used (e.g.\n                                       5400000), the value is assumed to be in\n                                       milliseconds.\n                                       When used together with data driven\n                                       tests, the timeout behavior depends on\n                                       the test adapter used. For xUnit, NUnit\n                                       and MSTest 2.2.4+ the timeout is renewed\n                                       after every test case,\n                                       For MSTest before 2.2.4, the timeout is\n                                       used for all testcases.\n  -nologo, --no-logo                   Run test(s), without displaying\n                                       Microsoft Testplatform banner [default:\n                                       True]\n  -c, --configuration <CONFIGURATION>  The configuration to use for running\n                                       tests. The default for most projects is\n                                       'Debug'.\n  -f, --framework <FRAMEWORK>          The target framework to run tests for.\n                                       The target framework must also be\n                                       specified in the project file.\n  --no-restore                         Do not restore the project before\n                                       building. [default: False]\n  --interactive                        Allows the command to stop and wait for\n                                       user input or action (for example to\n                                       complete authentication). [default:\n                                       False]\n  -v, -verbosity <LEVEL>               Set the MSBuild verbosity level. Allowed\n                                       values are q[uiet], m[inimal], n[ormal],\n                                       d[etailed], and diag[nostic].\n  -r, --runtime <RUNTIME_IDENTIFIER>   The target runtime to test for.\n  -a, --arch <ARCH>                    The target architecture.\n  --os <OS>                            The target operating system.\n  --disable-build-servers              Force the command to ignore any\n                                       persistent build servers. [default:\n                                       False]\n  -?, -h, --help                       Show command line help.\n\nAdditional Arguments:\n  Arguments passed to the application that is being run.\n\n"
      },
      {
        "id": "help-new",
        "kind": "help",
        "revision": ".NET SDK 10.0.401 (dotnet new -h)",
        "evidence": "Description:\n  Template Instantiation Commands for .NET CLI.\n\nUsage:\n  dotnet new [<template-short-name> [<template-args>...]] [options]\n  dotnet new [command] [options]\n\nArguments:\n  <template-short-name>  A short name of the template to create.\n  <template-args>        Template specific options to use.\n\nOptions:\n  -o, --output <output>    Location to place the generated output.\n  -n, --name <name>        The name for the output being created. If no name is\n                           specified, the name of the output directory is used.\n  --dry-run                Displays a summary of what would happen if the given\n                           command line were run if it would result in a\n                           template creation. [default: False]\n  --force                  Forces content to be generated even if it would\n                           change existing files. [default: False]\n  --no-update-check        Disables checking for the template package updates\n                           when instantiating a template. [default: False]\n  --project <project>      The project that should be used for context\n                           evaluation.\n  -v, --verbosity <LEVEL>  Sets the verbosity level. Allowed values are\n                           q[uiet], m[inimal], n[ormal], and diag[nostic].\n                           [default: normal]\n  -d, --diagnostics        Enables diagnostic output. [default: False]\n  -?, -h, --help           Show command line help.\n\nCommands:\n  create <template-short-name>   Instantiates a template with given short name.\n  <template-args>                An alias of 'dotnet new <template name>'.\n  install <package>              Installs a template package.\n  uninstall <package>            Uninstalls a template package.\n  update                         Checks the currently installed template\n                                 packages for update, and install the updates.\n  search <template-name>         Searches for the templates on NuGet.org.\n  list <template-name>           Lists templates containing the specified\n                                 template name. If no name is specified, lists\n                                 all templates.\n  details <package-identifier>   Provides the details for specified template\n                                 package.\n                                       The command checks if the package is\n                                 installed locally, if it was not found, it\n                                 searches the configured NuGet feeds.\n\n"
      }
    ],
    "subcommand": [
      {
        "path": [
          "build"
        ],
        "label": "Build project",
        "description": "Builds a project, solution or file-based program.",
        "source": [
          {
            "id": "help-build",
            "kind": "help",
            "revision": ".NET SDK 10.0.401 (dotnet build -h)",
            "evidence": "Description:\n  .NET Builder\n\nUsage:\n  dotnet build [<PROJECT | SOLUTION | FILE>...] [options]\n\nArguments:\n  <PROJECT | SOLUTION | FILE>  The project or solution or C# (file-based\n                               program) file to operate on. If a file is not\n                               specified, the command will search the current\n                               directory for a project or solution.\n\nOptions:\n  --ucr, --use-current-runtime         Use current runtime as the target\n                                       runtime. [default: False]\n  -f, --framework <FRAMEWORK>          The target framework to build for. The\n                                       target framework must also be specified\n                                       in the project file.\n  -c, --configuration <CONFIGURATION>  The configuration to use for building\n                                       the project. The default for most\n                                       projects is 'Debug'.\n  --version-suffix <VERSION_SUFFIX>    Set the value of the $(VersionSuffix)\n                                       property to use when building the\n                                       project.\n  --no-restore                         Do not restore the project before\n                                       building. [default: False]\n  --interactive                        Allows the command to stop and wait for\n                                       user input or action (for example to\n                                       complete authentication). [default:\n                                       False]\n  -v, -verbosity <LEVEL>               Set the MSBuild verbosity level. Allowed\n                                       values are q[uiet], m[inimal], n[ormal],\n                                       d[etailed], and diag[nostic].\n  -o, --output <OUTPUT_DIR>            The output directory to place built\n                                       artifacts in.\n  --artifacts-path <ARTIFACTS_DIR>     The artifacts path. All output from the\n                                       project, including build, publish, and\n                                       pack output, will go in subfolders under\n                                       the specified path.\n  --no-incremental                     Do not use incremental building.\n                                       [default: False]\n  --no-dependencies                    Do not build project-to-project\n                                       references and only build the specified\n                                       project. [default: False]\n  -nologo, --no-logo                   Do not display the startup banner or the\n                                       copyright message. [default: True]\n  --sc, --self-contained               Publish the .NET runtime with your\n                                       application so the runtime doesn't need\n                                       to be installed on the target machine.\n                                       The default is 'false.' However, when\n                                       targeting .NET 7 or lower, the default\n                                       is 'true' if a runtime identifier is\n                                       specified. [default: False]\n  --no-self-contained                  Publish your application as a framework\n                                       dependent application. A compatible .NET\n                                       runtime must be installed on the target\n                                       machine to run your application.\n                                       [default: False]\n  -r, --runtime <RUNTIME_IDENTIFIER>   The target runtime to build for.\n  -a, --arch <ARCH>                    The target architecture.\n  --os <OS>                            The target operating system.\n  --disable-build-servers              Force the command to ignore any\n                                       persistent build servers. [default:\n                                       False]\n  -?, -h, --help                       Show command line help.\n\n"
          }
        ],
        "field": [
          {
            "id": "project",
            "label": "Project or solution",
            "type": "path",
            "position": 0,
            "path": {
              "kind": "any",
              "role": "input"
            },
            "sources": [
              "help-build"
            ]
          },
          {
            "id": "configuration",
            "label": "Configuration",
            "type": "string",
            "option": [
              "--configuration",
              "-c"
            ],
            "suggestions": [
              {
                "value": "Debug",
                "label": "Debug"
              },
              {
                "value": "Release",
                "label": "Release"
              }
            ],
            "sources": [
              "help-build"
            ]
          },
          {
            "id": "framework",
            "label": "Target framework",
            "type": "string",
            "option": [
              "--framework",
              "-f"
            ],
            "sources": [
              "help-build"
            ]
          },
          {
            "id": "runtime",
            "label": "Runtime identifier",
            "type": "string",
            "option": [
              "--runtime",
              "-r"
            ],
            "sources": [
              "help-build"
            ]
          },
          {
            "id": "output",
            "label": "Output directory",
            "type": "path",
            "option": [
              "--output",
              "-o"
            ],
            "path": {
              "kind": "directory",
              "role": "output"
            },
            "sources": [
              "help-build"
            ]
          },
          {
            "id": "no_restore",
            "label": "Skip restore",
            "type": "boolean",
            "option": [
              "--no-restore"
            ],
            "sources": [
              "help-build"
            ]
          },
          {
            "id": "no_incremental",
            "label": "Non-incremental build",
            "type": "boolean",
            "option": [
              "--no-incremental"
            ],
            "sources": [
              "help-build"
            ]
          },
          {
            "id": "self_contained",
            "label": "Self-contained",
            "type": "boolean",
            "option": [
              "--self-contained"
            ],
            "sources": [
              "help-build"
            ]
          },
          {
            "id": "no_logo",
            "label": "No banner",
            "type": "boolean",
            "option": [
              "--no-logo"
            ],
            "sources": [
              "help-build"
            ]
          }
        ],
        "task": [
          {
            "id": "debug",
            "label": "Debug build",
            "set": {
              "configuration": [
                "Debug"
              ]
            },
            "fields": [
              "project",
              "configuration"
            ],
            "required": []
          },
          {
            "id": "release",
            "label": "Release build",
            "set": {
              "configuration": [
                "Release"
              ]
            },
            "fields": [
              "project",
              "configuration",
              "output",
              "runtime"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "project",
              "configuration",
              "output"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "no_restore",
              "no_incremental",
              "self_contained",
              "no_logo",
              "runtime",
              "framework"
            ]
          }
        ]
      },
      {
        "path": [
          "run"
        ],
        "label": "Run project",
        "description": "Builds and runs a project; app arguments after -- are not covered.",
        "source": [
          {
            "id": "help-run",
            "kind": "help",
            "revision": ".NET SDK 10.0.401 (dotnet run -h)",
            "evidence": "Description:\n  .NET Run Command\n\nUsage:\n  dotnet run [<applicationArguments>...] [options]\n\nArguments:\n  <applicationArguments>  Arguments passed to the application that is being\n                          run. []\n\nOptions:\n  -c, --configuration <CONFIGURATION>     The configuration to run for. The\n                                          default for most projects is 'Debug'.\n  -f, --framework <FRAMEWORK>             The target framework to run for. The\n                                          target framework must also be\n                                          specified in the project file.\n  --project <PROJECT_PATH>                Defines the path of the project file\n                                          to run. Use path to the project file,\n                                          or path to the directory containing\n                                          the project file. If not specified,\n                                          it defaults to the current directory.\n  --file <FILE_PATH>                      The path to the file-based app to run\n                                          (can be also passed as the first\n                                          argument if there is no project in\n                                          the current directory).\n  -lp, --launch-profile <LAUNCH_PROFILE>  The name of the launch profile (if\n                                          any) to use when launching the\n                                          application.\n  --no-launch-profile                     Do not attempt to use\n                                          launchSettings.json or [app].run.json\n                                          to configure the application.\n                                          [default: False]\n  --device <DEVICE>                       The device identifier to use for\n                                          running the application.\n  --list-devices                          List available devices for running\n                                          the application. [default: False]\n  --no-build                              Do not build the project before\n                                          running. Implies --no-restore.\n                                          [default: False]\n  --interactive                           Allows the command to stop and wait\n                                          for user input or action (for example\n                                          to complete authentication).\n                                          [default: False]\n  --no-restore                            Do not restore the project before\n                                          building. [default: False]\n  --no-cache                              Skip up to date checks and always\n                                          build the program before running.\n                                          [default: False]\n  --sc, --self-contained                  Publish the .NET runtime with your\n                                          application so the runtime doesn't\n                                          need to be installed on the target\n                                          machine.\n                                          The default is 'false.' However, when\n                                          targeting .NET 7 or lower, the\n                                          default is 'true' if a runtime\n                                          identifier is specified. [default:\n                                          False]\n  --no-self-contained                     Publish your application as a\n                                          framework dependent application. A\n                                          compatible .NET runtime must be\n                                          installed on the target machine to\n                                          run your application. [default:\n                                          False]\n  -v, -verbosity <LEVEL>                  Set the MSBuild verbosity level.\n                                          Allowed values are q[uiet],\n                                          m[inimal], n[ormal], d[etailed], and\n                                          diag[nostic].\n  -r, --runtime <RUNTIME_IDENTIFIER>      The target runtime to run for.\n  -a, --arch <ARCH>                       The target architecture.\n  --os <OS>                               The target operating system.\n  --disable-build-servers                 Force the command to ignore any\n                                          persistent build servers. [default:\n                                          False]\n  --artifacts-path <ARTIFACTS_DIR>        The artifacts path. All output from\n                                          the project, including build,\n                                          publish, and pack output, will go in\n                                          subfolders under the specified path.\n  -e, --environment <NAME=\"VALUE\">        Sets the value of an environment\n                                          variable.\n                                          Creates the variable if it does not\n                                          exist, overrides if it does.\n                                          This argument can be specified\n                                          multiple times to provide multiple\n                                          variables.\n\n                                          Examples:\n                                          -e VARIABLE=abc\n                                          -e VARIABLE=\"value with spaces\"\n                                          -e VARIABLE=\"value;seperated\n                                          with;semicolons\"\n                                          -e VAR1=abc -e VAR2=def -e VAR3=ghi\n  -?, -h, --help                          Show command line help.\n\n"
          }
        ],
        "field": [
          {
            "id": "project",
            "label": "Project path",
            "type": "path",
            "option": [
              "--project"
            ],
            "path": {
              "kind": "any",
              "role": "input"
            },
            "sources": [
              "help-run"
            ]
          },
          {
            "id": "configuration",
            "label": "Configuration",
            "type": "string",
            "option": [
              "--configuration",
              "-c"
            ],
            "suggestions": [
              {
                "value": "Debug",
                "label": "Debug"
              },
              {
                "value": "Release",
                "label": "Release"
              }
            ],
            "sources": [
              "help-run"
            ]
          },
          {
            "id": "framework",
            "label": "Target framework",
            "type": "string",
            "option": [
              "--framework",
              "-f"
            ],
            "sources": [
              "help-run"
            ]
          },
          {
            "id": "launch_profile",
            "label": "Launch profile",
            "type": "string",
            "option": [
              "--launch-profile",
              "-lp"
            ],
            "sources": [
              "help-run"
            ]
          },
          {
            "id": "no_launch_profile",
            "label": "Ignore launch profile",
            "type": "boolean",
            "option": [
              "--no-launch-profile"
            ],
            "sources": [
              "help-run"
            ]
          },
          {
            "id": "no_build",
            "label": "Skip build",
            "type": "boolean",
            "option": [
              "--no-build"
            ],
            "sources": [
              "help-run"
            ]
          },
          {
            "id": "no_restore",
            "label": "Skip restore",
            "type": "boolean",
            "option": [
              "--no-restore"
            ],
            "sources": [
              "help-run"
            ]
          }
        ],
        "task": [
          {
            "id": "run",
            "label": "Run project",
            "fields": [
              "project",
              "configuration",
              "launch_profile"
            ],
            "required": []
          },
          {
            "id": "fast",
            "label": "Run without rebuild",
            "set": {
              "no_build": [
                true
              ]
            },
            "fields": [
              "project",
              "no_build"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "project",
              "configuration",
              "launch_profile",
              "no_build"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "framework",
              "no_launch_profile",
              "no_restore"
            ]
          }
        ]
      },
      {
        "path": [
          "test"
        ],
        "label": "Run tests",
        "description": "Runs VSTest tests; additional runner arguments are not covered.",
        "source": [
          {
            "id": "help-test",
            "kind": "help",
            "revision": ".NET SDK 10.0.401 (dotnet test -h)",
            "evidence": "Description:\n  .NET Test Command for VSTest. To use Microsoft.Testing.Platform, opt-in to\n  the Microsoft.Testing.Platform-based command via global.json. For more\n  information, see https://aka.ms/dotnet-test.\n\nUsage:\n  dotnet test [options] [[--] <additional arguments>...]]\n\nOptions:\n  -s, --settings <SETTINGS_FILE>       The settings file to use when running\n                                       tests.\n  -t, --list-tests                     List the discovered tests instead of\n                                       running the tests. [default: False]\n  -e, --environment <NAME=\"VALUE\">     Sets the value of an environment\n                                       variable.\n                                       Creates the variable if it does not\n                                       exist, overrides if it does.\n                                       This will force the tests to be run in\n                                       an isolated process.\n                                       This argument can be specified multiple\n                                       times to provide multiple variables.\n\n                                       Examples:\n                                       -e VARIABLE=abc\n                                       -e VARIABLE=\"value with spaces\"\n                                       -e VARIABLE=\"value;seperated\n                                       with;semicolons\"\n                                       -e VAR1=abc -e VAR2=def -e VAR3=ghi\n  --filter <EXPRESSION>                Run tests that match the given\n                                       expression.\n\n                                       Examples:\n\n                                       Run tests with priority set to 1:\n                                       --filter \"Priority = 1\"\n\n                                       Run a test with the specified full name:\n                                       --filter\n                                       \"FullyQualifiedName=Namespace.ClassName.M\n                                       ethodName\"\n\n                                       Run tests that contain the specified\n                                       name: --filter\n                                       \"FullyQualifiedName~Namespace.Class\"\n\n                                       See https://aka.ms/vstest-filtering for\n                                       more information on filtering support.\n  --test-adapter-path <ADAPTER_PATH>   The path to the custom adapters to use\n                                       for the test run.\n  -l, --logger <LOGGER>                The logger to use for test results.\n\n                                       Examples:\n\n                                       Log in trx format using a unique file\n                                       name: --logger trx\n\n                                       Log in trx format using the specified\n                                       file name: --logger\n                                       \"trx;LogFileName=<TestResults.trx>\"\n\n                                       See https://aka.ms/vstest-report for\n                                       more information on logger arguments.\n  -o, --output <OUTPUT_DIR>            The output directory to place built\n                                       artifacts in.\n  --artifacts-path <ARTIFACTS_DIR>     The artifacts path. All output from the\n                                       project, including build, publish, and\n                                       pack output, will go in subfolders under\n                                       the specified path.\n  -d, --diag <LOG_FILE>                Enable verbose logging to the specified\n                                       file.\n  --no-build                           Do not build the project before testing.\n                                       Implies --no-restore. [default: False]\n  --results-directory <RESULTS_DIR>    The directory where the test results\n                                       will be placed.\n                                       The specified directory will be created\n                                       if it does not exist.\n  --collect <DATA_COLLECTOR_NAME>      The friendly name of the data collector\n                                       to use for the test run.\n\n                                       More info here:\n                                       https://aka.ms/vstest-collect\n  --blame                              Runs the tests in blame mode. This\n                                       option is helpful in isolating\n                                       problematic tests that cause the test\n                                       host to crash or hang, but it does not\n                                       create a memory dump by default.\n\n                                       When a crash is detected, it creates an\n                                       sequence file in\n                                       TestResults/guid/guid_Sequence.xml that\n                                       captures the order of tests that were\n                                       run before the crash.\n\n                                       Based on the additional settings, hang\n                                       dump or crash dump can also be\n                                       collected.\n\n                                       Example:\n                                         Timeout the test run when test takes\n                                       more than the default timeout of 1 hour,\n                                       and collect crash dump when the test\n                                       host exits unexpectedly.\n                                         (Crash dumps require additional setup,\n                                       see below.)\n                                         dotnet test --blame-hang --blame-crash\n                                       Example:\n                                         Timeout the test run when a test takes\n                                       more than 20 minutes and collect hang\n                                       dump.\n                                         dotnet test --blame-hang-timeout 20min\n                                        [default: False]\n  --blame-crash                        Runs the tests in blame mode and\n                                       collects a crash dump when the test host\n                                       exits unexpectedly. This option depends\n                                       on the version of .NET used, the type of\n                                       error, and the operating system.\n\n                                       For exceptions in managed code, a dump\n                                       will be automatically collected on .NET\n                                       5.0 and later versions. It will generate\n                                       a dump for testhost or any child process\n                                       that also ran on .NET 5.0 and crashed.\n                                       Crashes in native code will not generate\n                                       a dump. This option works on Windows,\n                                       macOS, and Linux.\n\n                                       Crash dumps in native code, or when\n                                       targetting .NET Framework, or .NET Core\n                                       3.1 and earlier versions, can only be\n                                       collected on Windows, by using Procdump.\n                                       A directory that contains procdump.exe\n                                       and procdump64.exe must be in the PATH\n                                       or PROCDUMP_PATH environment variable.\n\n                                       The tools can be downloaded here:\n                                       https://docs.microsoft.com/sysinternals/d\n                                       ownloads/procdump\n\n                                       To collect a crash dump from a native\n                                       application running on .NET 5.0 or\n                                       later, the usage of Procdump can be\n                                       forced by setting the\n                                       VSTEST_DUMP_FORCEPROCDUMP environment\n                                       variable to 1.\n\n                                       Implies --blame. [default: False]\n  --blame-crash-dump-type <DUMP_TYPE>  The type of crash dump to be collected.\n                                       Supported values are full (default) and\n                                       mini. Implies --blame-crash.\n  --blame-crash-collect-always         Enables collecting crash dump on\n                                       expected as well as unexpected testhost\n                                       exit. [default: False]\n  --blame-hang                         Run the tests in blame mode and enables\n                                       collecting hang dump when test exceeds\n                                       the given timeout. [default: False]\n  --blame-hang-dump-type <DUMP_TYPE>   The type of crash dump to be collected.\n                                       The supported values are full (default),\n                                       mini, and none. When 'none' is used then\n                                       test host is terminated on timeout, but\n                                       no dump is collected. Implies\n                                       --blame-hang.\n  --blame-hang-timeout <TIMESPAN>      Per-test timeout, after which hang dump\n                                       is triggered and the testhost process is\n                                       terminated. Default is 1h.\n                                       The timeout value is specified in the\n                                       following format: 1.5h / 90m / 5400s /\n                                       5400000ms. When no unit is used (e.g.\n                                       5400000), the value is assumed to be in\n                                       milliseconds.\n                                       When used together with data driven\n                                       tests, the timeout behavior depends on\n                                       the test adapter used. For xUnit, NUnit\n                                       and MSTest 2.2.4+ the timeout is renewed\n                                       after every test case,\n                                       For MSTest before 2.2.4, the timeout is\n                                       used for all testcases.\n  -nologo, --no-logo                   Run test(s), without displaying\n                                       Microsoft Testplatform banner [default:\n                                       True]\n  -c, --configuration <CONFIGURATION>  The configuration to use for running\n                                       tests. The default for most projects is\n                                       'Debug'.\n  -f, --framework <FRAMEWORK>          The target framework to run tests for.\n                                       The target framework must also be\n                                       specified in the project file.\n  --no-restore                         Do not restore the project before\n                                       building. [default: False]\n  --interactive                        Allows the command to stop and wait for\n                                       user input or action (for example to\n                                       complete authentication). [default:\n                                       False]\n  -v, -verbosity <LEVEL>               Set the MSBuild verbosity level. Allowed\n                                       values are q[uiet], m[inimal], n[ormal],\n                                       d[etailed], and diag[nostic].\n  -r, --runtime <RUNTIME_IDENTIFIER>   The target runtime to test for.\n  -a, --arch <ARCH>                    The target architecture.\n  --os <OS>                            The target operating system.\n  --disable-build-servers              Force the command to ignore any\n                                       persistent build servers. [default:\n                                       False]\n  -?, -h, --help                       Show command line help.\n\nAdditional Arguments:\n  Arguments passed to the application that is being run.\n\n"
          }
        ],
        "field": [
          {
            "id": "filter",
            "label": "Test filter",
            "type": "string",
            "option": [
              "--filter"
            ],
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "logger",
            "label": "Logger",
            "type": "string",
            "option": [
              "--logger",
              "-l"
            ],
            "suggestions": [
              {
                "value": "trx",
                "label": "trx"
              },
              {
                "value": "console;verbosity=detailed",
                "label": "console;verbosity=detailed"
              }
            ],
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "configuration",
            "label": "Configuration",
            "type": "string",
            "option": [
              "--configuration",
              "-c"
            ],
            "suggestions": [
              {
                "value": "Debug",
                "label": "Debug"
              },
              {
                "value": "Release",
                "label": "Release"
              }
            ],
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "framework",
            "label": "Target framework",
            "type": "string",
            "option": [
              "--framework",
              "-f"
            ],
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "list_tests",
            "label": "List tests only",
            "type": "boolean",
            "option": [
              "--list-tests"
            ],
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "no_build",
            "label": "Skip build",
            "type": "boolean",
            "option": [
              "--no-build"
            ],
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "no_restore",
            "label": "Skip restore",
            "type": "boolean",
            "option": [
              "--no-restore"
            ],
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "collect",
            "label": "Data collector",
            "type": "string",
            "option": [
              "--collect"
            ],
            "suggestions": [
              {
                "value": "XPlat Code Coverage",
                "label": "XPlat Code Coverage"
              }
            ],
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "results_directory",
            "label": "Results directory",
            "type": "path",
            "option": [
              "--results-directory"
            ],
            "path": {
              "kind": "directory",
              "role": "output"
            },
            "sources": [
              "help-test"
            ]
          },
          {
            "id": "blame",
            "label": "Blame mode",
            "type": "boolean",
            "option": [
              "--blame"
            ],
            "sources": [
              "help-test"
            ]
          }
        ],
        "task": [
          {
            "id": "test",
            "label": "Run all tests",
            "fields": [
              "configuration",
              "filter",
              "logger"
            ],
            "required": []
          },
          {
            "id": "coverage",
            "label": "Collect coverage",
            "set": {
              "collect": [
                "XPlat Code Coverage"
              ]
            },
            "fields": [
              "collect",
              "results_directory",
              "filter"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "filter",
              "logger",
              "configuration",
              "list_tests",
              "no_build",
              "collect"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "framework",
              "no_restore",
              "blame",
              "results_directory"
            ]
          }
        ]
      },
      {
        "path": [
          "new"
        ],
        "label": "New project from template",
        "description": "Instantiates a template; template-specific options are not covered.",
        "source": [
          {
            "id": "help-new",
            "kind": "help",
            "revision": ".NET SDK 10.0.401 (dotnet new -h)",
            "evidence": "Description:\n  Template Instantiation Commands for .NET CLI.\n\nUsage:\n  dotnet new [<template-short-name> [<template-args>...]] [options]\n  dotnet new [command] [options]\n\nArguments:\n  <template-short-name>  A short name of the template to create.\n  <template-args>        Template specific options to use.\n\nOptions:\n  -o, --output <output>    Location to place the generated output.\n  -n, --name <name>        The name for the output being created. If no name is\n                           specified, the name of the output directory is used.\n  --dry-run                Displays a summary of what would happen if the given\n                           command line were run if it would result in a\n                           template creation. [default: False]\n  --force                  Forces content to be generated even if it would\n                           change existing files. [default: False]\n  --no-update-check        Disables checking for the template package updates\n                           when instantiating a template. [default: False]\n  --project <project>      The project that should be used for context\n                           evaluation.\n  -v, --verbosity <LEVEL>  Sets the verbosity level. Allowed values are\n                           q[uiet], m[inimal], n[ormal], and diag[nostic].\n                           [default: normal]\n  -d, --diagnostics        Enables diagnostic output. [default: False]\n  -?, -h, --help           Show command line help.\n\nCommands:\n  create <template-short-name>   Instantiates a template with given short name.\n  <template-args>                An alias of 'dotnet new <template name>'.\n  install <package>              Installs a template package.\n  uninstall <package>            Uninstalls a template package.\n  update                         Checks the currently installed template\n                                 packages for update, and install the updates.\n  search <template-name>         Searches for the templates on NuGet.org.\n  list <template-name>           Lists templates containing the specified\n                                 template name. If no name is specified, lists\n                                 all templates.\n  details <package-identifier>   Provides the details for specified template\n                                 package.\n                                       The command checks if the package is\n                                 installed locally, if it was not found, it\n                                 searches the configured NuGet feeds.\n\n"
          }
        ],
        "field": [
          {
            "id": "template",
            "label": "Template short name",
            "type": "string",
            "position": 0,
            "suggestions": [
              {
                "value": "console",
                "label": "console"
              },
              {
                "value": "classlib",
                "label": "classlib"
              },
              {
                "value": "webapi",
                "label": "webapi"
              },
              {
                "value": "xunit",
                "label": "xunit"
              },
              {
                "value": "sln",
                "label": "sln"
              },
              {
                "value": "gitignore",
                "label": "gitignore"
              }
            ],
            "sources": [
              "help-new"
            ]
          },
          {
            "id": "name",
            "label": "Name",
            "type": "string",
            "option": [
              "--name",
              "-n"
            ],
            "sources": [
              "help-new"
            ]
          },
          {
            "id": "output",
            "label": "Output directory",
            "type": "path",
            "option": [
              "--output",
              "-o"
            ],
            "path": {
              "kind": "directory",
              "role": "output"
            },
            "sources": [
              "help-new"
            ]
          },
          {
            "id": "dry_run",
            "label": "Dry run",
            "type": "boolean",
            "option": [
              "--dry-run"
            ],
            "sources": [
              "help-new"
            ]
          },
          {
            "id": "force",
            "label": "Overwrite existing files",
            "type": "boolean",
            "option": [
              "--force"
            ],
            "effect": "overwrite",
            "sources": [
              "help-new"
            ]
          }
        ],
        "task": [
          {
            "id": "console",
            "label": "Console app",
            "set": {
              "template": [
                "console"
              ]
            },
            "fields": [
              "template",
              "name",
              "output"
            ],
            "required": [
              "template"
            ]
          },
          {
            "id": "dry",
            "label": "Preview template",
            "set": {
              "dry_run": [
                true
              ]
            },
            "fields": [
              "template",
              "name",
              "dry_run"
            ],
            "required": [
              "template"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "template",
              "name",
              "output",
              "dry_run",
              "force"
            ]
          }
        ]
      }
    ]
  }
}
