dotnet new
This article applies to: ✔️ .NET Core 2.0 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] [-i|--install {PATH|NUGET_ID}]
[-lang|--language {"C#"|"F#"|VB}] [-n|--name <OUTPUT_NAME>]
[--nuget-source <SOURCE>] [-o|--output <OUTPUT_DIRECTORY>]
[-u|--uninstall] [--update-apply] [--update-check] [Template options]
dotnet new <TEMPLATE> [-l|--list] [--type <TYPE>]
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 to create the artifacts on disk based on the specified template and options.
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 explicitly 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
ordotnet new -l
to see a list of all installed templates. If theTEMPLATE
value isn't an exact match on text in the Templates or Short Name column from the returned table, a substring match is performed on those two columns.Starting with .NET Core 3.0 SDK, 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 created but the CLI warns you about an updated version of the template.
The following table shows the templates that come pre-installed with the .NET SDK. The default language for the template is shown inside the brackets. Click on the short name link to see the specific template options.
- If the CLI can't find a template match when invoking
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 Library | wpfcustomcontrollib | [C#], VB | Common/WPF | 3.0 (5.0 for VB) |
WPF User Control Library | wpfusercontrollib | [C#], VB | Common/WPF | 3.0 (5.0 for VB) |
Windows Forms (WinForms) Application | winforms | [C#], VB | Common/WinForms | 3.0 (5.0 for VB) |
Windows Forms (WinForms) Class library | winformslib | [C#], VB | Common/WinForms | 3.0 (5.0 for VB) |
Worker Service | worker | [C#] | Common/Worker/Web | 3.0 |
Unit Test Project | mstest | [C#], F#, VB | Test/MSTest | 1.0 |
NUnit 3 Test Project | nunit | [C#], F#, VB | Test/NUnit | 2.1.400 |
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 App | blazorwasm | [C#] | Web/Blazor/WebAssembly | 3.1.300 |
ASP.NET Core Empty | web | [C#], F# | Web/Empty | 1.0 |
ASP.NET Core Web App (Model-View-Controller) | mvc | [C#], F# | Web/MVC | 1.0 |
ASP.NET Core Web App | webapp, razor | [C#] | Web/MVC/Razor Pages | 2.2, 2.0 |
ASP.NET Core with Angular | angular | [C#] | Web/MVC/SPA | 2.0 |
ASP.NET Core with React.js | react | [C#] | Web/MVC/SPA | 2.0 |
ASP.NET Core with React.js and Redux | reactredux | [C#] | Web/MVC/SPA | 2.0 |
Razor Class Library | razorclasslib | [C#] | Web/Razor/Library/Razor Class Library | 2.1 |
ASP.NET Core Web API | webapi | [C#], F# | Web/WebAPI | 1.0 |
ASP.NET Core gRPC Service | grpc | [C#] | Web/gRPC | 3.0 |
dotnet gitignore file | gitignore |
Config | 3.0 | |
global.json file | globaljson | Config | 2.0 | |
NuGet Config | nugetconfig |
Config | 1.0 | |
Dotnet local tool manifest file | tool-manifest |
Config | 3.0 | |
Web Config | webconfig |
Config | 1.0 | |
Solution File | sln |
Solution | 1.0 | |
Protocol Buffer File | proto | Web/gRPC | 3.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 template 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 template. For example,dotnet new mvc --help
.-i|--install <PATH|NUGET_ID>
Installs a template pack from the
PATH
orNUGET_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 latest stable package version. See an example in the Examples section.If a version of the template was already installed when you run this command, the template will be updated to the specified version, or to the latest stable version if no version was specified.
For information on creating custom templates, see Custom templates for dotnet new.
-l|--list
Lists templates containing the specified name. If no name is specified, lists all 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, 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.
--nuget-source <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 <TYPE>
Filters templates based on available types. Predefined values are
project
anditem
.-u|--uninstall [PATH|NUGET_ID]
Uninstalls a template pack at the
PATH
orNUGET_ID
provided. When the<PATH|NUGET_ID>
value isn't specified, all currently installed template packs and their associated templates are displayed. When specifyingNUGET_ID
, don't include the version number.If you don't specify a parameter to this option, the command lists the installed templates and details about them.
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. Don't include a final terminating directory slash on your template path.--update-apply
Checks if there are updates available for the template packs that are currently installed and installs them. Available since .NET Core 3.0 SDK.
--update-check
Checks if there are updates available for the template packs that are currently installed. Available since .NET Core 3.0 SDK.
Template options
Each project template may have additional options available. The core templates have the following additional options:
console
-f|--framework <FRAMEWORK>
Specifies the framework to target. Available since .NET Core 3.0 SDK.
The following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.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#. Available since .NET Core 2.2 SDK.For a list of default C# versions, see Defaults.
--no-restore
If specified, doesn't execute an implicit restore during project creation. Available since .NET Core 2.2 SDK.
classlib
-f|--framework <FRAMEWORK>
Specifies the framework to target. Values:
net5.0
ornetcoreapp<version>
to create a .NET Class Library ornetstandard<version>
to create a .NET Standard Class Library. The default value for .NET 5.0 SDK isnet5.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#. Available since .NET Core 2.2 SDK.For a list of default C# versions, see Defaults.
--no-restore
Doesn't execute an implicit restore during project creation.
wpf, wpflib, wpfcustomcontrollib, wpfusercontrollib
-f|--framework <FRAMEWORK>
Specifies the framework to target. The default value is
net5.0
. Available since .NET Core 3.1 SDK.--langVersion <VERSION_NUMBER>
Sets the
LangVersion
property in the created project file. For example, use--langVersion 7.3
to use C# 7.3.For a list of default C# versions, see Defaults.
--no-restore
Doesn't execute an implicit restore during project creation.
winforms, winformslib
--langVersion <VERSION_NUMBER>
Sets the
LangVersion
property in the created project file. For example, use--langVersion 7.3
to use C# 7.3.For a list of default C# versions, see Defaults.
--no-restore
Doesn't execute an implicit restore during project creation.
worker, grpc
-f|--framework <FRAMEWORK>
Specifies the framework to target. The default value is
netcoreapp3.1
. Available since .NET Core 3.1 SDK.--exclude-launch-settings
Excludes launchSettings.json from the generated template.
--no-restore
Doesn't execute an implicit restore during project creation.
mstest, xunit
-f|--framework <FRAMEWORK>
Specifies the framework to target. Option available since .NET Core 3.0 SDK.
The following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.0
-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 following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.0
2.2 netcoreapp2.2
2.1 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, proto
-na|--namespace <NAMESPACE_NAME>
Namespace for the generated code. The default value is
MyApp.Namespace
.
blazorserver
-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 ishttps://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
orMultiOrg
authentication. The default value ishttps://login.microsoftonline.com/
.--client-id <ID>
The Client ID for this project. Use with
IndividualB2C
,SingleOrg
, orMultiOrg
authentication. The default value is11111111-1111-1111-11111111111111111
.--domain <DOMAIN>
The domain for the directory tenant. Use with
SingleOrg
orIndividualB2C
authentication. The default value isqualified.domain.name
.--tenant-id <ID>
The TenantId ID of the directory to connect to. Use with
SingleOrg
authentication. The default value is22222222-2222-2222-2222-222222222222
.--callback-path <PATH>
The request path within the application's base path of the redirect URI. Use with
SingleOrg
orIndividualB2C
authentication. The default value is/signin-oidc
.-r|--org-read-access
Allows this application read-access to the directory. Only applies to
SingleOrg
orMultiOrg
authentication.--exclude-launch-settings
Excludes launchSettings.json from the generated template.
--no-https
Turns off HTTPS. This option only applies if
Individual
,IndividualB2C
,SingleOrg
, orMultiOrg
aren't being used for--auth
.-uld|--use-local-db
Specifies LocalDB should be used instead of SQLite. Only applies to
Individual
orIndividualB2C
authentication.--no-restore
Doesn't execute an implicit restore during project creation.
blazorwasm
-f|--framework <FRAMEWORK>
Specifies the framework to target.
The following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
--no-restore
Doesn't execute an implicit restore during project creation.
-ho|--hosted
Includes an ASP.NET Core host for the Blazor WebAssembly app.
-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.
--authority <AUTHORITY>
The authority of the OIDC provider. Use with
Individual
authentication. The default value ishttps://login.microsoftonline.com/
.--aad-b2c-instance <INSTANCE>
The Azure Active Directory B2C instance to connect to. Use with
IndividualB2C
authentication. The default value ishttps://aadB2CInstance.b2clogin.com/
.-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 ishttps://login.microsoftonline.com/
.--client-id <ID>
The Client ID for this project. Use with
IndividualB2C
,SingleOrg
, orIndividual
authentication in standalone scenarios. The default value is33333333-3333-3333-33333333333333333
.--domain <DOMAIN>
The domain for the directory tenant. Use with
SingleOrg
orIndividualB2C
authentication. The default value isqualified.domain.name
.--app-id-uri <URI>
The App ID Uri for the server API you want to call. Use with
SingleOrg
orIndividualB2C
authentication. The default value isapi.id.uri
.--api-client-id <ID>
The Client ID for the API that the server hosts. Use with
SingleOrg
orIndividualB2C
authentication. The default value is11111111-1111-1111-11111111111111111
.-s|--default-scope <SCOPE>
The API scope the client needs to request to provision an access token. Use with
SingleOrg
orIndividualB2C
authentication. The default value isuser_impersonation
.--tenant-id <ID>
The TenantId ID of the directory to connect to. Use with
SingleOrg
authentication. The default value is22222222-2222-2222-2222-222222222222
.-r|--org-read-access
Allows this application read-access to the directory. Only applies to
SingleOrg
authentication.--exclude-launch-settings
Excludes launchSettings.json from the generated template.
-p|--pwa
produces a Progressive Web Application (PWA) supporting installation and offline use.
--no-https
Turns off HTTPS. This option only applies if
Individual
,IndividualB2C
, orSingleOrg
aren't being used for--auth
.-uld|--use-local-db
Specifies LocalDB should be used instead of SQLite. Only applies to
Individual
orIndividualB2C
authentication.--called-api-url <URL>
URL of the API to call from the web app. Only applies to
SingleOrg
orIndividualB2C
authentication without an ASP.NET Core host specified. The default value ishttps://graph.microsoft.com/v1.0/me
.--calls-graph
Specifies if the web app calls Microsoft Graph. Only applies to
SingleOrg
authentication.--called-api-scopes <SCOPES>
Scopes to request to call the API from the web app. Only applies to
SingleOrg
orIndividualB2C
authentication without an ASP.NET Core host specified. The default isuser.read
.
web
--exclude-launch-settings
Excludes launchSettings.json from the generated template.
-f|--framework <FRAMEWORK>
Specifies the framework to target. Option not available in .NET Core 2.2 SDK.
The following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.0
2.1 netcoreapp2.1
--no-restore
Doesn't execute an implicit restore during project creation.
--no-https
Turns off HTTPS.
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 ishttps://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
orMultiOrg
authentication. The default value ishttps://login.microsoftonline.com/
.--client-id <ID>
The Client ID for this project. Use with
IndividualB2C
,SingleOrg
, orMultiOrg
authentication. The default value is11111111-1111-1111-11111111111111111
.--domain <DOMAIN>
The domain for the directory tenant. Use with
SingleOrg
orIndividualB2C
authentication. The default value isqualified.domain.name
.--tenant-id <ID>
The TenantId ID of the directory to connect to. Use with
SingleOrg
authentication. The default value is22222222-2222-2222-2222-222222222222
.--callback-path <PATH>
The request path within the application's base path of the redirect URI. Use with
SingleOrg
orIndividualB2C
authentication. The default value is/signin-oidc
.-r|--org-read-access
Allows this application read-access to the directory. Only applies to
SingleOrg
orMultiOrg
authentication.--exclude-launch-settings
Excludes launchSettings.json from the generated template.
--no-https
Turns off HTTPS. This option only applies if
Individual
,IndividualB2C
,SingleOrg
, orMultiOrg
aren't being used.-uld|--use-local-db
Specifies LocalDB should be used instead of SQLite. Only applies to
Individual
orIndividualB2C
authentication.-f|--framework <FRAMEWORK>
Specifies the framework to target. Option available since .NET Core 3.0 SDK.
The following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.0
--no-restore
Doesn't execute an implicit restore during project creation.
--use-browserlink
Includes BrowserLink in the project. Option not available in .NET Core 2.2 and 3.1 SDK.
-rrc|--razor-runtime-compilation
Determines if the project is configured to use Razor runtime compilation in Debug builds. Option available since .NET Core 3.1.201 SDK.
angular, react
-au|--auth <AUTHENTICATION_TYPE>
The type of authentication to use. Available since .NET Core 3.0 SDK.
The possible values are:
None
- No authentication (Default).Individual
- Individual authentication.
--exclude-launch-settings
Excludes launchSettings.json from the generated template.
--no-restore
Doesn't execute an implicit restore during project creation.
--no-https
Turns off HTTPS. This option only applies if authentication is
None
.-uld|--use-local-db
Specifies LocalDB should be used instead of SQLite. Only applies to
Individual
orIndividualB2C
authentication. Available since .NET Core 3.0 SDK.-f|--framework <FRAMEWORK>
Specifies the framework to target. Option not available in .NET Core 2.2 SDK.
The following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.0
2.1 netcoreapp2.0
reactredux
--exclude-launch-settings
Excludes launchSettings.json from the generated template.
-f|--framework <FRAMEWORK>
Specifies the framework to target. Option not available in .NET Core 2.2 SDK.
The following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.0
2.1 netcoreapp2.0
--no-restore
Doesn't execute an implicit restore during project creation.
--no-https
Turns off HTTPS.
razorclasslib
--no-restore
Doesn't execute an implicit restore during project creation.
-s|--support-pages-and-views
Supports adding traditional Razor pages and Views in addition to components to this library. Available since .NET Core 3.0 SDK.
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 ishttps://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 ishttps://login.microsoftonline.com/
.--client-id <ID>
The Client ID for this project. Use with
IndividualB2C
orSingleOrg
authentication. The default value is11111111-1111-1111-11111111111111111
.--domain <DOMAIN>
The domain for the directory tenant. Use with
IndividualB2C
orSingleOrg
authentication. The default value isqualified.domain.name
.--tenant-id <ID>
The TenantId ID of the directory to connect to. Use with
SingleOrg
authentication. The default value is22222222-2222-2222-2222-222222222222
.-r|--org-read-access
Allows this application read-access to the directory. Only applies to
SingleOrg
authentication.--exclude-launch-settings
Excludes launchSettings.json from the generated template.
--no-https
Turns off HTTPS.
app.UseHsts
andapp.UseHttpsRedirection
aren't added toStartup.Configure
. This option only applies ifIndividualB2C
orSingleOrg
aren't being used for authentication.-uld|--use-local-db
Specifies LocalDB should be used instead of SQLite. Only applies to
IndividualB2C
authentication.-f|--framework <FRAMEWORK>
Specifies the framework to target. Option not available in .NET Core 2.2 SDK.
The following table lists the default values according to the SDK version number you're using:
SDK version Default value 5.0 net5.0
3.1 netcoreapp3.1
3.0 netcoreapp3.0
2.1 netcoreapp2.1
--no-restore
Doesn't execute an implicit restore during project creation.
globaljson
--sdk-version <VERSION_NUMBER>
Specifies the version of the .NET 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:
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 Single Page Application (SPA) templates:
dotnet new spa -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 SPA templates for ASP.NET Core:
dotnet new -i Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0
List the installed templates and details about them, including how to uninstall them:
dotnet new -u
Create a global.json in the current directory setting the SDK version to 3.1.101:
dotnet new globaljson --sdk-version 3.1.101