dotnet new <TEMPLATE>

本文适用于: ✔️ .NET Core 3.1 SDK 及更高版本

“属性”

dotnet new - 根据指定的模板,创建新的项目、配置文件或解决方案。

摘要

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

描述

dotnet new 命令基于模板创建 .NET 项目或其他项目。

命令调用模板引擎,以根据指定的模板和选项在磁盘上创建项目。

注意

从 .NET 7 SDK 开始,dotnet new 语法已更改:

  • --list--search--install--uninstall 选项已变更为 listsearchinstalluninstall 子命令。
  • --update-apply 选项变更为 update 子命令。
  • 若要使用 --update-check,请使用包含 --check-only 选项的 update 子命令。

之前可用的其他选项仍可用于各自的子命令。 每个子命令的单独帮助可通过 -h--help 选项获得:dotnet new <subcommand> --help 列出子命令的所有支持选项。

此外,tab 自动补全现可供 dotnet new 使用。 它支持安装模板名称的自动补全,以及所选模板所提供选项的自动补全。 若要激活 .NET SDK 的 tab 自动补全,请参阅启用 tab 自动补全

Tab 自动补全

从 .NET SDK 7.0.100 开始,Tab 自动补全可用于 dotnet new。 它支持安装模板名称的自动补全,以及所选模板所提供选项的自动补全。 若要激活 .NET SDK 的 tab 自动补全,请参阅启用 tab 自动补全

隐式还原

无需运行 dotnet restore,因为它由所有需要还原的命令隐式运行,如 dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet pack。 若要禁用隐式还原,请使用 --no-restore 选项。

在执行显式还原有意义的某些情况下,例如 dotnet restore中,或在需要显式控制还原发生时间的生成系统中,dotnet restore 命令仍然有用。

有关如何使用 NuGet 源的信息,请参阅 dotnet restore 文档

参数

  • TEMPLATE

    调用命令时要实例化的模板。 每个模板可能具有可传递的特定选项。 有关详细信息,请参阅模板选项

    可以运行 dotnet new list 以查看所有已安装模板的列表。

    从 .NET Core 3.0 SDK 开始,到 .NET SDK 5.0.300 结束,当你在以下情况下调用 dotnet new 命令时,CLI 将在 NuGet.org 中搜索模板:

    • 如果在调用 dotnet new 时 CLI 找不到模板匹配项,即使是部分匹配也不行。
    • 如果有较新版本的模板可用。 在这种情况下,将创建项目或工件,但 CLI 会就模板的更新版本发出警告。

    从 .NET SDK 5.0.300 开始,应使用 search 命令在 NuGet.org. 中搜索模板。

下表显示随 .NET SDK 一起预安装的模板。 模板的默认语言显示在括号内。 单击短名称链接可查看特定的模板选项。

模板 短名称 语言 Tags 已引入
控制台应用程序 console [C#]、F#、VB 常用/控制台 1.0
类库 classlib [C#]、F#、VB 常用/库 1.0
WPF 应用程序 wpf [C#]、VB 常用/WPF 3.0(对于 VB,则为 5.0)
WPF 类库 wpflib [C#]、VB 常用/WPF 3.0(对于 VB,则为 5.0)
WPF 自定义控件库 wpfcustomcontrollib [C#]、VB 常用/WPF 3.0(对于 VB,则为 5.0)
WPF 用户控件库 wpfusercontrollib [C#]、VB 常用/WPF 3.0(对于 VB,则为 5.0)
Windows 窗体 (WinForms) 应用程序 winforms [C#]、VB 常用/WinForms 3.0(对于 VB,则为 5.0)
Windows 窗体 (WinForms) 类库 winformslib [C#]、VB 常用/WinForms 3.0(对于 VB,则为 5.0)
Worker Service worker [C#] 常用/Worker/Web 3.0
MSTest 测试项目 mstest [C#]、F#、VB 测试/MSTest 1.0
MSTest 测试类 mstest-class [C#]、F#、VB 测试/MSTest 1.0
NUnit 3 测试项目 nunit [C#]、F#、VB 测试/NUnit 2.1.400
NUnit 3 测试项 nunit-test [C#]、F#、VB 测试/NUnit 2.2
xUnit 测试项目 xunit [C#]、F#、VB 测试/xUnit 1.0
Razor 组件 razorcomponent [C#] Web/ASP.NET 3.0
Razor 页 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 Web 应用 blazor [C#] Web/Blazor 8.0.100
BlazorWebAssembly 独立应用 blazorwasm [C#] Web/Blazor//WebAssemblyPWA 3.1.300
ASP.NET Core 空 web [C#],F# Web/空 1.0
ASP.NET Core Web 应用程序 (Model-View-Controller) mvc [C#],F# Web/MVC 1.0
ASP.NET Core Web 应用程序 webapp, razor [C#] Web/MVC/Razor Pages 2.2、2.0
Razor 类库 razorclasslib [C#] Web/Razor/库/Razor 类库 2.1
ASP.NET Core Web API webapi [C#],F# Web/Web API/API/Service/WebAPI 1.0
ASP.NET Core API webapiaot [C#] Web/Web API/API/Service 8.0
ASP.NET 核心 API 控制器 apicontroller [C#] Web/ASP.NET 8.0
ASP.NET Core gRPC 服务 grpc [C#] Web/gRPC 3.0
dotnet gitignore 文件 gitignore 配置 3.0
global.json 文件 globaljson 配置 2.0
NuGet 配置 nugetconfig 配置 1.0
Dotnet 本地工具清单文件 tool-manifest 配置 3.0
Web 配置 webconfig 配置 1.0
解决方案文件 sln 解决方案 1.0
协议缓冲区文件 proto Web/gRPC 3.0
EditorConfig 文件 editorconfig Config 6.0

下表显示了已停用且不再随 .NET SDK 预安装的模板。 单击短名称链接可查看特定的模板选项。

模板 短名称 语言 标记
含 Angular 的 ASP.NET Core angular [C#] Web/MVC/SPA 8.0
含 React.js 的 ASP.NET Core react [C#] Web/MVC/SPA 8.0
Blazor 服务器应用 blazorserver [C#] Web/Blazor 8.0
Blazor 服务器应用空 blazorserver-empty [C#] Web/Blazor 8.0
BlazorWebAssembly 应用空 blazorwasm-empty [C#] Web/Blazor/WebAssembly 8.0

选项

  • --dry-run

    显示有关以下内容的摘要:给定命令运行导致模板创建时发生的情况。 自 .NET Core 2.2 SDK 起可用。

  • --force

    强制生成内容,即使会更改现有文件,也不例外。 当选择的模板将覆盖输出目录中的现有文件时,需要执行此操作。

  • -?|-h|--help

    打印命令帮助。 可针对 dotnet new 命令本身或任何模板调用它。 例如 dotnet new mvc --help

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

    要创建的模板的语言。 接受的语言因模板而异(请参阅参数部分中的默认值)。 对于某些模板无效。

    注意

    某些 shell 将 # 解释为特殊字符。 在这些情况下,请将语言参数值括在引号中。 例如 dotnet new console -lang "F#"

  • -n|--name <OUTPUT_NAME>

    所创建的输出的名称。 如果未指定名称,使用的是当前目录的名称。

  • -f|--framework <FRAMEWORK>

    指定目标框架。 它需要目标框架名字对象 (TFM)。 示例:“net6.0”、“net7.0-macos”。 此值将反映在项目文件中。

  • -no-update-check

    禁止在实例化模板时检查模板包更新。 自 .NET SDK 6.0.100 之后可用。 从使用 dotnet new --install 安装的模板包实例化模板时,dotnet new 会检查模板是否有更新。 从 .NET 6 开始,不对 .NET 默认模板进行更新检查。 若要更新 .NET 默认模板,请安装 .NET SDK 的修补程序版本。

  • -o|--output <OUTPUT_DIRECTORY>

    用于放置生成的输出的位置。 默认为当前目录。

  • --project <PROJECT_PATH>

    模板添加到的项目。 此项目用于上下文评估。 如果未指定,将使用当前目录或父目录中的项目。 自 .NET SDK 7.0.100 之后可用。

  • -d|--diagnostics

    启用诊断输出。 自 .NET SDK 7.0.100 之后可用。

  • -v|--verbosity <LEVEL>

    设置命令的详细级别。 允许的值为 q[uiet]m[inimal]n[ormal]diag[nostic]。 自 .NET SDK 7.0.100 之后可用。

模板选项

每个模板都可能定义了附加选项。 有关详细信息,请参阅适用于 dotnet new 的 .NET 默认模板

示例

  • 创建 C# 控制台应用程序项目:

    dotnet new console
    
  • 在当前目录中创建 F# 控制台应用程序项目:

    dotnet new console --language "F#"
    
  • 在指定的目录中创建 .NET Standard 2.0 类库项目:

    dotnet new classlib --framework "netstandard2.0" -o MyLibrary
    
  • 在当前目录中新建没有设置身份验证的 ASP.NET Core C# MVC 项目:

    dotnet new mvc -au None
    
  • 创建新的 xUnit 项目:

    dotnet new xunit
    
  • 在当前目录中创建 global.json ,将 SDK 版本设置为 8.0.101:

    dotnet new globaljson --sdk-version 8.0.101 --roll-forward latestFeature
    
  • 显示 C# 控制台应用程序模板的帮助:

    dotnet new console -h
    
  • 显示 F# 控制台应用程序模板的帮助:

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

请参阅