-
Notifications
You must be signed in to change notification settings - Fork 370
Reserved Aliases
In dotnet new
the parameter symbols are exposed as additional template options that can be passed to the command. Generally, dotnet new
uses the name of parameter symbol to generate the long and the short alias for the option:
- The long alias is a parameter symbol name with
--
prefix. - The short alias is a parameter symbol name first character with
-
prefix.
Note that the aliases are case sensitive.
With dotnetcli.host.json
file we can change long alias and short alias of the template option and its visibility. dotnetcli.host.json
is located at the same directory as template.json file. It has the following configuration:
-
symbolsInfo
It has a collection of the name of specified parameter symbol in template.json with corresponding long or short aliases to override original ones and the visibility of the template option.-
longName
- overrides the long alias for the parameter symbol. -
shortName
- overrides the short alias for the parameter symbol. Empty means short alias should not be used. -
isHidden
-true
if the parameter should be hidden indotnet new
.
-
-
usageExamples
- not used; see #3262 for more details.
In case when option assignment results in duplicate options, --param:
prefix is used for the long alias and short alias is generated from the beginning of the symbol's name till the one which can form a unique short name with -
prefix or -p:
prefix is used.
Overrides original long alias --TargetFrameworkOverride
with --targetframework
and overrides short alias -T
with -tf
.
{
"$schema": "http://json.schemastore.org/dotnetcli.host",
"symbolInfo": {
"TargetFrameworkOverride": {
"longName": "targetframework",
"shortName": "tf"
}
}
}
Part of the output of dotnet new <template shortName> --help
looks like:
Template options:
-tf, --targetframework <net7.0|net6.0|...> Overrides the target framework.
Parameter TargetFrameworkOverride
is hidden from dotnet new
help information.
{
"$schema": "http://json.schemastore.org/dotnetcli.host",
"symbolInfo": {
"TargetFrameworkOverride": {
"isHidden": "true"
}
}
}
If short name is not specified, short name is the first character of overridden long name. Long alias is --targetframework
and short alias is -t
.
{
"$schema": "http://json.schemastore.org/dotnetcli.host",
"symbolInfo": {
"TargetFrameworkOverride": {
"longName": "targetframework"
}
}
}
If short name is empty, there is no short alias for the template option. Long alias is --targetframework
.
{
"$schema": "http://json.schemastore.org/dotnetcli.host",
"symbolInfo": {
"TargetFrameworkOverride": {
"longName": "targetframework",
"shortName": ""
}
}
}
Part of the output of dotnet new <template shortName> --help
looks like:
Template options:
--targetframework <net7.0|net6.0|...> Overrides the target framework.
If long/short alias from overridden long/short name is reserved alias, long name will be prefixed with --param:
and short name will be prefixed with -p:
instead. Here long alias is --param:package
and short alias is -p:i
. See Reserved Aliases.
{
"$schema": "http://json.schemastore.org/dotnetcli.host",
"symbolInfo": {
"pack": {
"longName": "package",
"shortName": "i"
}
}
}
Assuming template.json
has the symbols below.
"symbols": {
"TargetFrameworkOverride": {
"type": "parameter",
"description": "Overrides the target framework.",
"dataType": "string",
"defaultValue": "net7.0"
},
"targetframework": {
"type": "parameter",
"description": "The target framework for the project.",
"dataType": "string",
"defaultValue": "net6.0"
}
}
With the following dotnetcli.host.json
, long alias and short alias of symbol TargetFrameworkOverride
is --targetframework
and -t
. For symbol targetframework
, since aliases --targetframework
-t
are already taken its long alias is prefixed with --param:
to be --param:targetframework
and short alias is -ta
.
{
"$schema": "http://json.schemastore.org/dotnetcli.host",
"symbolInfo": {
"TargetFrameworkOverride": {
"longName": "targetframework"
}
}
}
Part of the output of dotnet new <template shortName> --help
looks like:
Template options:
-t, --targetframework <net7.0> Overrides the target framework.
-ta, --param:targetframework <net6.0> The target framework for the project.
The following are reserved aliases in dotnet new
. They are applied to .NET SDK 7+.
If long alias is reserved alias, long name will be prefixed with --param:
instead.
If short alias is reserved alias, short name will be prefixed with -p:
instead.
"symbols": {
"package": {
"description": "A sample symbol for --package is reserved.",
"type": "parameter",
"defaultValue": "This is the default value for package."
},
"u": {
"description": "A sample symbol for -u is reserved.",
"type": "parameter",
"defaultValue": "This is the default value for u."
}
}
When instantiating the template, for symbol package
the template option is --param:package
, and -p
for short.
For symbol u
the template option is --u
, and -p:u
for short.
Alias | Description |
---|---|
create | Instantiates a template with given short name. |
install --install -i |
Installs a template package. |
uninstall --uninstall -u |
Uninstalls a template package. |
update --update-check |
Checks the currently installed template packages for update, and install the updates. |
search --search |
Searches for the templates on NuGet.org. |
list --list -l |
Lists templates containing the specified template name. If no name is specified, lists all templates. |
alias | Creates or displays defined aliases. |
-o --output |
Location to place the generated output. |
-n --name |
The name for the output being created. If no name is specified, the name of the output directory is used. |
--dry-run | Displays a summary of what would happen if the given command line were run if it would result in a template creation. |
--force | Forces content to be generated even if it would change existing files. |
--no-update-check | Disables checking for the template package updates when instantiating a template. |
--type | Specifies the template type to instantiate. |
--author | Filters the templates based on the template author. |
--baseline | Filters the templates based on baseline defined in the template. |
--language -lang |
Filters templates based on language. |
--tag | Filters the templates based on the tag. |
--package | Filters the templates based on NuGet package ID. |
--interactive | Allows the command to stop and wait for user input or action (for example to complete authentication). |
--add-source --nuget-source |
Specifies a NuGet source to use during install. |
--columns-all | Display all columns in the output. |
--columns | Specifies the columns to display in the output. |
--debug:custom-hive | Sets custom settings location. |
--debug:ephemeral-hive --debug:virtual-hive |
If specified, the settings will be not preserved on file system. |
--debug:attach | Allows to pause execution in order to attach to the process for debug purposes. |
--debug:reinit | If specified, resets the settings prior to command execution. |
--debug:rebuild-cache --debug:rebuildcache |
If specified, removes the template cache prior to command execution. |
--debug:show-config --debug:showconfig |
If specified, shows the template engine config prior to command execution. |
--project | The project that should be used for context evaluation. |
--debug:disable-sdk-templates | If present, prevents templates bundled in the SDK from being presented. |
--debug:disable-project-context | Disables evaluating project context using MSBuild. |
--update-apply | Checks the currently installed template packages for updates. |
--alias -a |
Creates an alias for instantiate command with a certain set of arguments. |
--show-alias | Displays defined aliases. |
-h /h --help -? /? |
Show command line help. |