Provided by: dotnet-host-8.0_8.0.18-0ubuntu1~24.04.1_amd64 bug

dotnet new <TEMPLATE>

       This article applies to: ✔️ .NET Core 3.1 SDK and later versions

NAME

       dotnet-new - Creates a new project, configuration file, or solution based on the specified template.

SYNOPSIS

              dotnet new <TEMPLATE> [--dry-run] [--force] [-lang|--language {"C#"|"F#"|VB}]
                  [-n|--name <OUTPUT_NAME>] [-f|--framework <FRAMEWORK>] [--no-update-check]
                  [-o|--output <OUTPUT_DIRECTORY>] [--project <PROJECT_PATH>]
                  [-d|--diagnostics] [--verbosity <LEVEL>] [Template options]

              dotnet new -h|--help

DESCRIPTION

       The dotnet new command creates a .NET project or other artifacts based on a template.

       The  command  calls the template engine (https://github.com/dotnet/templating) to create the artifacts on
       disk based on the specified template and options.

       Starting with the .NET 7 SDK, the dotnet new syntax has changed:

       • The --list, --search, --install, and --uninstall options became list, search,  install,  and  uninstall
         subcommands.

       • The --update-apply option became the update subcommand.

       • To use --update-check, use the update subcommand with the --check-only option.

       Other  options  that  were available before are still available to use with their respective subcommands.
       Separate help for each subcommand is available via the -h  or  --help  option:  dotnet  new  <subcommand>
       --help lists all supported options for the subcommand.

       Additionally,  tab completion is now available for dotnet new.  It supports completion for installed tem‐
       plate names and for the options a selected template provides.  To activate tab completion  for  the  .NET
       SDK, see Enable tab completion.

   Tab completion
       Starting  with  .NET SDK 7.0.100, tab completion is available for dotnet new.  It supports completion for
       installed template names, as well as completion for the options a selected template provides.   To  acti‐
       vate tab completion for the .NET SDK, see Enable tab completion.

   Implicit restore
       You  don’t  have to run dotnet restore because it’s run implicitly by all commands that require a restore
       to occur, such as dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, and dotnet pack.  To
       disable implicit restore, use the --no-restore option.

       The dotnet restore command is still useful in certain scenarios where explicitly restoring  makes  sense,
       such as continuous integration builds in Azure DevOps Services or in build systems that need to explicit‐
       ly control when the restore occurs.

       For information about how to manage NuGet feeds, see the dotnet restore documentation.

ARGUMENTS

TEMPLATE

         The template to instantiate when the command is invoked.  Each template might have specific options you
         can pass.  For more information, see Template options.

         You can run dotnet new list to see a list of all installed templates.

         Starting  with  .NET  Core  3.0 SDK and ending with .NET SDK 5.0.300, the CLI searches for templates in
         NuGet.org when you invoke the dotnet new command in the following conditions:

         • If the CLI can’t find a template match when invoking dotnet new, not even partial.

         • If there’s a newer version of the template available.  In this case, the project or artifact is  cre‐
           ated but the CLI warns you about an updated version of the template.

         Starting with .NET SDK 5.0.300, the search command should be used to search for templates in NuGet.org.

         The  following  table  shows the templates that come pre-installed with the .NET SDK.  The default lan‐
         guage for the template is shown inside the brackets.  Click on the short name link to see the  specific
         template options.

       Templates             Short name            Language       Tags                  Introduced
       ──────────────────────────────────────────────────────────────────────────────────────────────────
       Console application   console               [C#], F#, VB   Common/Console        1.0
       Class library         classlib              [C#], F#, VB   Common/Library        1.0
       WPF application       wpf                   [C#], VB       Common/WPF            3.0 (5.0 for VB)
       WPF class library     wpflib                [C#], VB       Common/WPF            3.0 (5.0 for VB)
       WPF  custom control   wpfcustomcontrollib   [C#], VB       Common/WPF            3.0 (5.0 for VB)
       library
       WPF  user   control   wpfusercontrollib     [C#], VB       Common/WPF            3.0 (5.0 for VB)
       library
       Windows Forms (Win‐   winforms              [C#], VB       Common/WinForms       3.0 (5.0 for VB)
       Forms) application
       Windows Forms (Win‐   winformslib           [C#], VB       Common/WinForms       3.0 (5.0 for VB)
       Forms)   class  li‐
       brary
       Worker service        worker                [C#]           Common/Worker/Web     3.0
       Unit test project     mstest                [C#], F#, VB   Test/MSTest           1.0
       NUnit    3     test   nunit                 [C#], F#, VB   Test/NUnit            2.1.400
       project
       NUnit 3 test item     nunit-test            [C#], F#, VB   Test/NUnit            2.2
       xUnit test project    xunit                 [C#], F#, VB   Test/xUnit            1.0
       Razor component       razorcomponent        [C#]           Web/ASP.NET           3.0
       Razor page            page                  [C#]           Web/ASP.NET           2.0
       MVC ViewImports       viewimports           [C#]           Web/ASP.NET           2.0
       MVC ViewStart         viewstart             [C#]           Web/ASP.NET           2.0
       Blazor server app     blazorserver          [C#]           Web/Blazor            3.0
       Blazor  WebAssembly   blazorwasm            [C#]           Web/Blazor/We‐        3.1.300
       app                                                        bAssembly
       ASP.NET Core empty    web                   [C#], F#       Web/Empty             1.0
       ASP.NET  Core   web   mvc                   [C#], F#       Web/MVC               1.0
       app    (Model-View-
       Controller)
       ASP.NET  Core   web   webapp, razor         [C#]           Web/MVC/Razor Pages   2.2, 2.0
       app
       ASP.NET  Core  with   angular               [C#]           Web/MVC/SPA           2.0
       Angular
       ASP.NET  Core  with   react                 [C#]           Web/MVC/SPA           2.0
       React.js
       ASP.NET  Core  with   reactredux            [C#]           Web/MVC/SPA           2.0
       React.js and Redux
       Razor class library   razorclasslib         [C#]           Web/Razor/Li‐         2.1
                                                                  brary/Razor   Class
                                                                  Library
       ASP.NET   Core  web   webapi                [C#], F#       Web/WebAPI            1.0
       API
       ASP.NET  Core  gRPC   grpc                  [C#]           Web/gRPC              3.0
       service
       dotnet    gitignore   gitignore                            Config                3.0
       file
       global.json file      globaljson                           Config                2.0
       NuGet config          nugetconfig                          Config                1.0
       Dotnet  local  tool   tool-manifest                        Config                3.0
       manifest file
       Web config            webconfig                            Config                1.0
       Solution file         sln                                  Solution              1.0
       Protocol     buffer   proto                                Web/gRPC              3.0
       file
       EditorConfig file     editorconfig                         Config                6.0

OPTIONS

--dry-run

         Displays a summary of what would happen if the given command were run if it would result in a  template
         creation.  Available since .NET Core 2.2 SDK.

       • --force

         Forces  content to be generated even if it would change existing files.  This is required when the tem‐
         plate chosen would override existing files in the output directory.

       • -?|-h|--help

         Prints out help for the command.  It can be invoked for the dotnet new command itself or for  any  tem‐
         plate.  For example, dotnet new mvc --help.

       • -lang|--language {C#|F#|VB}

         The  language of the template to create.  The language accepted varies by the template (see defaults in
         the arguments section).  Not valid for some templates.

                Some shells interpret # as a special character.  In those cases, enclose the language  parameter
                value in quotes.  For example, dotnet new console -lang "F#".

       • -n|--name <OUTPUT_NAME>

         The name for the created output.  If no name is specified, the name of the current directory is used.

       • -f|--framework <FRAMEWORK>

         Specifies  the  target  framework.   It  expects a target framework moniker (TFM).  Examples: “net6.0”,
         “net7.0-macos”.  This value will be reflected in the project file.

       • -no-update-check

         Disables checking for template package updates when instantiating a template.  Available since .NET SDK
         6.0.100.  When instantiating the template from a template package that was installed  by  using  dotnet
         new  --install, dotnet new checks if there is an update for the template.  Starting with .NET 6, no up‐
         date checks are done for .NET default templates.  To update .NET default templates, install  the  patch
         version of the .NET SDK.

       • -o|--output <OUTPUT_DIRECTORY>

         Location to place the generated output.  The default is the current directory.

       • --project <PROJECT_PATH>

         The project that the template is added to.  This project is used for context evaluation.  If not speci‐
         fied, the project in the current or parent directories will be used.  Available since .NET SDK 7.0.100.

       • -d|--diagnostics

         Enables diagnostic output.  Available since .NET SDK 7.0.100.

       • -v|--verbosity <LEVEL>

         Sets  the  verbosity  level  of  the command.  Allowed values are q[uiet], m[inimal], n[ormal], and di‐
         ag[nostic].  Available since .NET SDK 7.0.100.

   Template options
       Each template may have additional options defined.  For more information, see .NET default templates  for
       dotnet new.

EXAMPLES

       • Create a C# console application project:

                dotnet new console

       • Create an F# console application project in the current directory:

                dotnet new console --language "F#"

       • Create a .NET Standard 2.0 class library project in the specified directory:

                dotnet new classlib --framework "netstandard2.0" -o MyLibrary

       • Create a new ASP.NET Core C# MVC project in the current directory with no authentication:

                dotnet new mvc -au None

       • Create a new xUnit project:

                dotnet new xunit

       • Create a global.json in the current directory setting the SDK version to 3.1.101:

                dotnet new globaljson --sdk-version 3.1.101

       • Show help for the C# console application template:

                dotnet new console -h

       • Show help for the F# console application template:

                dotnet new console --language "F#" -h

SEE ALSO

       • dotnet new list command

       • dotnet new search command

       • dotnet new install command

       • .NET default templates for dotnet new

       • Custom templates for dotnet new

       • Create a custom template for dotnet new

                                                   2023-10-25                                      dotnet-new(1)