dotnet new

This topic applies to: ✓ .NET Core 1.x SDK .NET Core 2.x SDK

Name

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

Synopsis

dotnet new <TEMPLATE> [--dry-run] [--force] [-i|--install] [-lang|--language] [-n|--name] [--nuget-source] [-o|--output] [-u|--uninstall] [Template options]
dotnet new <TEMPLATE> [-l|--list] [--type]
dotnet new [-h|--help]

Description

The dotnet new command provides a convenient way to initialize a valid .NET Core project.

The command calls the template engine to create the artifacts on disk based on the specified template and options.

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.

If the TEMPLATE value isn't an exact match on text in the Templates or Short Name column, a substring match is performed on those two columns.

The command contains a default list of templates. Use dotnet new -l to obtain a list of the available templates. The following table shows the templates that come pre-installed with the .NET Core SDK 2.2.100. The default language for the template is shown inside the brackets.

Templates Short Name Language Tags
Console Application console [C#], F#, VB Common/Console
Class library classlib [C#], F#, VB Common/Library
Unit Test Project mstest [C#], F#, VB Test/MSTest
NUnit 3 Test Project nunit [C#], F#, VB Test/NUnit
NUnit 3 Test Item nunit-test [C#], F#, VB Test/NUnit
xUnit Test Project xunit [C#], F#, VB Test/xUnit
Razor Page page [C#] Web/ASP.NET
MVC ViewImports viewimports [C#] Web/ASP.NET
MVC ViewStart viewstart [C#] Web/ASP.NET
ASP.NET Core Empty web [C#], F# Web/Empty
ASP.NET Core Web App (Model-View-Controller) mvc [C#], F# Web/MVC
ASP.NET Core Web App webapp, razor [C#] Web/MVC/Razor Pages
ASP.NET Core with Angular angular [C#] Web/MVC/SPA
ASP.NET Core with React.js react [C#] Web/MVC/SPA
ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA
Razor Class Library razorclasslib [C#] Web/Razor/Library/Razor Class Library
ASP.NET Core Web API webapi [C#], F# Web/WebAPI
global.json file globaljson Config
NuGet Config nugetconfig Config
Web Config webconfig Config
Solution File sln Solution

Options

--dry-run

Displays a summary of what would happen if the given command were run if it would result in a template creation.

--force

Forces content to be generated even if it would change existing files. This is required when the output directory already contains a project.

-h|--help

Prints out help for the command. It can be invoked for the dotnet new command itself or for any template, such as dotnet new mvc --help.

-i|--install <PATH|NUGET_ID>

Installs a source or template pack from the PATH or NUGET_ID provided. If you want to install a prerelease version of a template package, you need to specify the version in the format of <package-name>::<package-version>. By default, dotnet new passes * for the version, which represents the last stable package version. See an example at the Examples section.

For information on creating custom templates, see Custom templates for dotnet new.

-l|--list

Lists templates containing the specified name. If invoked for the dotnet new command, it lists the possible templates available for the given directory. For example if the directory already contains a project, it doesn't list all project templates.

-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.

Note

Some shells interpret # as a special character. In those cases, you need to enclose the language parameter value, such as 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.

--nuget-source

Specifies a NuGet source to use during install.

-o|--output <OUTPUT_DIRECTORY>

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

--type

Filters templates based on available types. Predefined values are "project", "item", or "other".

-u|--uninstall <PATH|NUGET_ID>

Uninstalls a source or template pack at the PATH or NUGET_ID provided. When excluding the <PATH|NUGET_ID> value, all currently installed template packs and their associated templates are displayed.

Note

To uninstall a template using a PATH, you need to fully qualify the path. For example, C:/Users/<USER>/Documents/Templates/GarciaSoftware.ConsoleTemplate.CSharp will work, but ./GarciaSoftware.ConsoleTemplate.CSharp from the containing folder will not. Additionally, do not include a final terminating directory slash on your template path.

Template options

Each project template may have additional options available. The core templates have the following additional options:

console

--langVersion <VERSION_NUMBER> - Sets the LangVersion property in the created project file. For example, use --langVersion 7.3 to use C# 7.3. Not supported for F#.

--no-restore - Doesn't execute an implicit restore during project creation.

angular, react, reactredux

--exclude-launch-settings - Exclude launchSettings.json from the generated template.

--no-restore - Doesn't execute an implicit restore during project creation.

--no-https - Project doesn't require HTTPS. This option only applies if IndividualAuth or OrganizationalAuth are not being used.

razorclasslib

--no-restore - Doesn't execute an implicit restore during project creation.

classlib

-f|--framework <FRAMEWORK> - Specifies the framework to target. Values: netcoreapp2.2 to create a .NET Core Class Library or netstandard2.0 to create a .NET Standard Class Library. The default value is netstandard2.0.

--langVersion <VERSION_NUMBER> - Sets the LangVersion property in the created project file. For example, use --langVersion 7.3 to use C# 7.3. Not supported for F#.

--no-restore - Doesn't execute an implicit restore during project creation.

mstest, xunit

-p|--enable-pack - Enables packaging for the project using dotnet pack.

--no-restore - Doesn't execute an implicit restore during project creation.

nunit

-f|--framework <FRAMEWORK> - Specifies the framework to target. The default value is netcoreapp2.1.

-p|--enable-pack - Enables packaging for the project using dotnet pack.

--no-restore - Doesn't execute an implicit restore during project creation.

page

-na|--namespace <NAMESPACE_NAME> - Namespace for the generated code. The default value is MyApp.Namespace.

-np|--no-pagemodel - Creates the page without a PageModel.

viewimports

-na|--namespace <NAMESPACE_NAME> - Namespace for the generated code. The default value is MyApp.Namespace.

web

--exclude-launch-settings - Exclude launchSettings.json from the generated template.

--no-restore - Doesn't execute an implicit restore during project creation.

--no-https - Project doesn't require HTTPS. This option only applies if IndividualAuth or OrganizationalAuth are not being used.

mvc, webapp

-au|--auth <AUTHENTICATION_TYPE> - The type of authentication to use. The possible values are:

  • None - No authentication (Default).
  • Individual - Individual authentication.
  • IndividualB2C - Individual authentication with Azure AD B2C.
  • SingleOrg - Organizational authentication for a single tenant.
  • MultiOrg - Organizational authentication for multiple tenants.
  • Windows - Windows authentication.

--aad-b2c-instance <INSTANCE> - The Azure Active Directory B2C instance to connect to. Use with IndividualB2C authentication. The default value is https://login.microsoftonline.com/tfp/.

-ssp|--susi-policy-id <ID> - The sign-in and sign-up policy ID for this project. Use with IndividualB2C authentication.

-rp|--reset-password-policy-id <ID> - The reset password policy ID for this project. Use with IndividualB2C authentication.

-ep|--edit-profile-policy-id <ID> - The edit profile policy ID for this project. Use with IndividualB2C authentication.

--aad-instance <INSTANCE> - The Azure Active Directory instance to connect to. Use with SingleOrg or MultiOrg authentication. The default value is https://login.microsoftonline.com/.

--client-id <ID> - The Client ID for this project. Use with IndividualB2C, SingleOrg, or MultiOrg authentication. The default value is 11111111-1111-1111-11111111111111111.

--domain <DOMAIN> - The domain for the directory tenant. Use with SingleOrg or IndividualB2C authentication. The default value is qualified.domain.name.

--tenant-id <ID> - The TenantId ID of the directory to connect to. Use with SingleOrg authentication. The default value is 22222222-2222-2222-2222-222222222222.

--callback-path <PATH> - The request path within the application's base path of the redirect URI. Use with SingleOrg or IndividualB2C authentication. The default value is /signin-oidc.

-r|--org-read-access - Allows this application read-access to the directory. Only applies to SingleOrg or MultiOrg authentication.

--exclude-launch-settings - Exclude launchSettings.json from the generated template.

--no-https - Project doesn't require HTTPS. app.UseHsts and app.UseHttpsRedirection aren't added to Startup.Configure. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't being used.

-uld|--use-local-db - Specifies LocalDB should be used instead of SQLite. Only applies to Individual or IndividualB2C authentication.

--no-restore - Doesn't execute an implicit restore during project creation.

webapi

-au|--auth <AUTHENTICATION_TYPE> - The type of authentication to use. The possible values are:

  • None - No authentication (Default).
  • IndividualB2C - Individual authentication with Azure AD B2C.
  • SingleOrg - Organizational authentication for a single tenant.
  • Windows - Windows authentication.

--aad-b2c-instance <INSTANCE> - The Azure Active Directory B2C instance to connect to. Use with IndividualB2C authentication. The default value is https://login.microsoftonline.com/tfp/.

-ssp|--susi-policy-id <ID> - The sign-in and sign-up policy ID for this project. Use with IndividualB2C authentication.

--aad-instance <INSTANCE> - The Azure Active Directory instance to connect to. Use with SingleOrg authentication. The default value is https://login.microsoftonline.com/.

--client-id <ID> - The Client ID for this project. Use with IndividualB2C or SingleOrg authentication. The default value is 11111111-1111-1111-11111111111111111.

--domain <DOMAIN> - The domain for the directory tenant. Use with SingleOrg or IndividualB2C authentication. The default value is qualified.domain.name.

--tenant-id <ID> - The TenantId ID of the directory to connect to. Use with SingleOrg authentication. The default value is 22222222-2222-2222-2222-222222222222.

-r|--org-read-access - Allows this application read-access to the directory. Only applies to SingleOrg or MultiOrg authentication.

--exclude-launch-settings - Exclude launchSettings.json from the generated template.

--no-https - Project doesn't require HTTPS. app.UseHsts and app.UseHttpsRedirection aren't added to Startup.Configure. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't being used.

-uld|--use-local-db - Specifies LocalDB should be used instead of SQLite. Only applies to Individual or IndividualB2C authentication.

--no-restore - Doesn't execute an implicit restore during project creation.

globaljson

--sdk-version <VERSION_NUMBER> - Specifies the version of the .NET Core SDK to use in the global.json file.

Examples

Create a C# console application project by specifying the template name:

dotnet new "Console Application"

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

dotnet new console -lang F#

Create a .NET Standard class library project in the specified directory (available only with .NET Core SDK 2.0 or later versions):

dotnet new classlib -lang VB -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

List all templates available for MVC:

dotnet new mvc -l

List all templates matching the we substring. No exact match is found, so substring matching runs against both the short name and name columns.

dotnet new we -l

Attempt to invoke the template matching ng. If a single match can't be determined, list the templates that are partial matches.

dotnet new ng

Install version 2.0 of the Single Page Application templates for ASP.NET Core (command option available for .NET Core SDK 1.1 and later versions only):

dotnet new -i Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0

Create a global.json in the current directory setting the SDK version to 2.0.0 (available only with .NET Core SDK 2.0 or later versions):

dotnet new globaljson --sdk-version 2.0.0

See also