dotnet命令详解
零、文章目录
dotnet命令详解
1、dotnet安装
(1)介绍
- dotnet命令行工具是.NET Core command-line (CLI) 的一部分,使用前需要安装.NET SDK。
- 安装.NET SDK 有两种方式
- 手动安装
- 随 Visual Studio 安装
(2)手动安装
- 官方下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet
(3)随VS安装
- 安装Visual Studio 的时候会安装.NET SDK
- 官方下载地址:https://visualstudio.microsoft.com/zh-hans/
- .NET SDK 版本和Visual Studio 版本对应关系
.NET SDK 版本 | Visual Studio 版本 |
---|---|
8 | Visual Studio 2022 17.8 版或更高版本 |
7 | Visual Studio 2022 17.4 版或更高版本 |
6 | Visual Studio 2022 版本 17.0 或更高版本 |
5 | Visual Studio 2019 版本 16.8 或更高版本 |
3.1 | Visual Studio 2019 版本 16.4 或更高版本 |
3.0 | Visual Studio 2019 版本 16.3 或更高版本 |
(4)检验安装
- 命令行输入,可以查看当前的版本信息
dotnet --info
2、基本信息查询
(1)dotnet(基本功能)
D:\DEV>dotnetUsage: dotnet [options]
Usage: dotnet [path-to-application]Options:-h|--help Display help.--info Display .NET information.--list-sdks Display the installed SDKs.--list-runtimes Display the installed runtimes.path-to-application:The path to an application .dll file to execute.
(2)dotnet -h(查看帮助)
D:\DEV>dotnet -h
使用情况: dotnet [runtime-options] [path-to-application] [arguments]执行 .NET 应用程序。runtime-options:--additionalprobingpath <path> 要探测的包含探测策略和程序集的路径。--additional-deps <path> 指向其他 deps.json 文件的路径。--depsfile 指向 <application>.deps.json 文件的路径。--fx-version <version> 要用于运行应用程序的安装版共享框架的版本。--roll-forward <setting> 前滚至框架版本(LatestPatch, Minor, LatestMinor, Major, LatestMajor, Disable)。--runtimeconfig 指向 <application>.runtimeconfig.json 文件的路径。path-to-application:要执行的应用程序 .dll 文件的路径。使用情况: dotnet [sdk-options] [command] [command-options] [arguments]执行 .NET SDK 命令。sdk-options:-d|--diagnostics 启用诊断输出。-h|--help 显示命令行帮助。--info 显示 .NET 信息。--list-runtimes 显示安装的运行时。--list-sdks 显示安装的 SDK。--version 显示使用中的 .NET SDK 版本。SDK 命令:add 将包或引用添加到 .NET 项目。build 生成 .NET 项目。build-server 与由生成版本启动的服务器进行交互。clean 清理 .NET 项目的生成输出。format 将样式首选项应用到项目或解决方案。help 在浏览器中打开指定命令的引用页。list 列出 .NET 项目的包或引用。msbuild 运行 Microsoft 生成引擎(MSBuild)命令。new 创建新的 .NET 项目或文件。nuget 提供其他 NuGet 命令。pack 创建 NuGet 包。publish 发布 .NET 项目进行部署。remove 从 .NET 项目中删除包或引用。restore 还原 .NET 项目中指定的依赖项。run 生成并运行 .NET 项目输出。sdk 管理 .NET SDK 安装。solution 修改 Visual Studio 解决方案文件。store 在运行时包存储中存储指定的程序集。test 使用 .NET 项目中指定的测试运行程序运行单元测试。tool 安装或管理扩展 .NET 体验的工具。vstest 运行 Microsoft 测试引擎(VSTest)命令。workload 管理可选工作负荷。捆绑工具中的其他命令:dev-certs 创建和管理开发证书。fsi 启动 F# 交互/执行 F# 脚本。user-jwts 在开发中管理 JSON Web 令牌。user-secrets 管理开发用户密码。watch 启动文件观察程序,它会在文件发生更改时运行命令。运行 "dotnet [command] --help",获取有关命令的详细信息。
(3)dotnet --info(显示 Net 信息)
D:\DEV>dotnet --info
.NET SDK:Version: 9.0.201Commit: 071aaccdc2Workload version: 9.0.200-manifests.a3a1a094MSBuild version: 17.13.13+1c2026462运行时环境:OS Name: WindowsOS Version: 10.0.18363OS Platform: WindowsRID: win-x64Base Path: C:\Program Files\dotnet\sdk\9.0.201\已安装 .NET 工作负载:
没有要显示的已安装工作负载。
配置为在安装新清单时使用 loose manifests。Host:Version: 9.0.3Architecture: x64Commit: 831d23e561.NET SDKs installed:8.0.100 [C:\Program Files\dotnet\sdk]9.0.201 [C:\Program Files\dotnet\sdk].NET runtimes installed:Microsoft.AspNetCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]Microsoft.AspNetCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]Microsoft.AspNetCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]Microsoft.AspNetCore.App 8.0.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]Microsoft.AspNetCore.App 9.0.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]Microsoft.NETCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]Microsoft.NETCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]Microsoft.NETCore.App 8.0.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]Microsoft.NETCore.App 9.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]Microsoft.WindowsDesktop.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]Microsoft.WindowsDesktop.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]Microsoft.WindowsDesktop.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]Microsoft.WindowsDesktop.App 8.0.14 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]Microsoft.WindowsDesktop.App 9.0.3 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]Other architectures found:x86 [C:\Program Files (x86)\dotnet]registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]Environment variables:Not setglobal.json file:Not foundLearn more:https://aka.ms/dotnet/infoDownload .NET:https://aka.ms/dotnet/download
(4)dotnet --list-sdks(显示安装的 SDK)
D:\DEV>dotnet --list-sdks
8.0.100 [C:\Program Files\dotnet\sdk]
9.0.201 [C:\Program Files\dotnet\sdk]
(5)dotnet --list-runtimes(显示安装的运行时)
D:\DEV>dotnet --list-runtimes
Microsoft.AspNetCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 9.0.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 9.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.14 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 9.0.3 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
(6)dotnet --version(显示使用中的 .NET SDK 版本)
D:\DEV>dotnet --version
9.0.201
(7)dotnet [command] --help(获取有关命令的详细信息)
- SDK 命令
- add 将包或引用添加到 .NET 项目。
- build 生成 .NET 项目。
- build-server 与由生成版本启动的服务器进行交互。
- clean 清理 .NET 项目的生成输出。
- format 将样式首选项应用到项目或解决方案。
- help 在浏览器中打开指定命令的引用页。
- list 列出 .NET 项目的包或引用。
- msbuild 运行 Microsoft 生成引擎(MSBuild)命令。
- new 创建新的 .NET 项目或文件。
- nuget 提供其他 NuGet 命令。
- pack 创建 NuGet 包。
- publish 发布 .NET 项目进行部署。
- remove 从 .NET 项目中删除包或引用。
- restore 还原 .NET 项目中指定的依赖项。
- run 生成并运行 .NET 项目输出。
- sdk 管理 .NET SDK 安装。
- solution 修改 Visual Studio 解决方案文件。
- store 在运行时包存储中存储指定的程序集。
- test 使用 .NET 项目中指定的测试运行程序运行单元测试。
- tool 安装或管理扩展 .NET 体验的工具。
- vstest 运行 Microsoft 测试引擎(VSTest)命令。
- workload 管理可选工作负荷。
- 捆绑工具中的其他命令
- dev-certs 创建和管理开发证书。
- fsi 启动 F# 交互/执行 F# 脚本。
- user-jwts 在开发中管理 JSON Web 令牌。
- user-secrets 管理开发用户密码。
- watch 启动文件观察程序,它会在文件发生更改时运行命令。
D:\DEV>dotnet new --help
Description:.NET CLI 的模板实例化命令。用法:dotnet new [<template-short-name> [<template-args>...]] [options]dotnet new [command] [options]参数:<template-short-name> 要创建的模板的短名称。<template-args> 要使用的模板特定选项。选项:-o, --output <output> 要放置生成的输出的位置。-n, --name <name> 正在创建的输出名称。如未指定名称,则使用输出目录的名称。--dry-run 如果运行给定命令行将导致模板创建,则显示将发生情况的摘要。--force 强制生成内容 (即使它会更改现有文件)。--no-update-check 在实例化模板时,禁用对模板包更新的检查。--project <project> 应用于上下文评估的项目。-v, --verbosity <LEVEL> 设置详细级别。允许的值为 q[uiet]、m[inimal]、n[ormal]、diag[nostic]。 [default: normal]-d, --diagnostics 启用诊断输出。-?, -h, --help 显示命令行帮助。命令:create <template-short-name> <template-args> 实例化具有给定短名称的模板。"dotnet new <template name>" 的别名。install <package> 安装模板包。uninstall <package> 卸载模板包。update 检查当前安装的模板包是否有更新,然后安装更新。search <template-name> 在 NuGet.org 上搜索模板。list <template-name> 列出包含指定模板名称的模板。如果未指定任何名称,则列出所有模板。details <package-identifier> 提供指定模板包的详细信息。命令将检查本地是否安装了包;如果未找到,它会搜索所配置的 NuGet 源。
3、项目生命周期命令
(1)dotnet new
(创建新的 .NET 项目或文件)
- 功能:基于模板创建新项目或解决方案文件。
- 常用参数:
-o
:指定输出目录(如dotnet new console -o MyApp
)-n
:设置项目名称--framework
:指定目标框架(如net8.0
)
dotnet new sln -o MySolution # 创建解决方案
dotnet new webapi -n MyApi # 创建 Web API 项目
dotnet sln add MyApi/MyApi.csproj # 将项目加入解决方案
- 常用模板如下
D:\DEV>dotnet new list
这些模板已匹配你的输入:模板名 短名称 语言 标记
------------------------------------------------------------- ------------------------------- ---------- ------------------------------------------------------------------------------------
API 控制器 apicontroller [C#] Web/ASP.NET
ASP.NET Core gRPC 服务 grpc [C#] Web/gRPC/API/Service
ASP.NET Core Web API webapi [C#],F# Web/WebAPI/Web API/API/Service
ASP.NET Core Web API (native AOT) webapiaot [C#] Web/Web API/API/Service
ASP.NET Core Web 应用 webapp,razor [C#] Web/MVC/Razor Pages
ASP.NET Core Web 应用(模型-视图-控制器) mvc [C#],F# Web/MVC
ASP.NET Core 与 Angular angular [C#] Web/MVC/SPA
ASP.NET Core 与 React.js react [C#] Web/MVC/SPA
ASP.NET Core 空 web [C#],F# Web/Empty
Blazor Server 应用 blazorserver [C#] Web/Blazor
Blazor Server 应用空 blazorserver-empty [C#] Web/Blazor/Empty
Blazor Web 应用 blazor [C#] Web/Blazor/WebAssembly
Blazor WebAssembly 应用空 blazorwasm-empty [C#] Web/Blazor/WebAssembly/PWA/Empty
Blazor WebAssembly 独立应用 blazorwasm [C#] Web/Blazor/WebAssembly/PWA
dotnet gitignore 文件 gitignore,.gitignore Config
Dotnet 本地工具清单文件 tool-manifest Config
EditorConfig 文件 editorconfig,.editorconfig Config
global.json file globaljson,global.json Config
MSBuild Directory.Build.props 文件 buildprops MSBuild/props
MSBuild Directory.Build.targets 文件 buildtargets MSBuild/props
MSBuild Directory.Packages.props 文件 packagesprops MSBuild/packages/props/CPM
MSTest Playwright 测试项目 mstest-playwright [C#] Test/MSTest/Playwright/Desktop/Web
MSTest 测试类 mstest-class [C#],F#,VB Test/MSTest
MSTest 测试项目 mstest [C#],F#,VB Test/MSTest/Desktop/Web
MVC ViewImports viewimports [C#] Web/ASP.NET
MVC ViewStart viewstart [C#] Web/ASP.NET
MVC 控制器 mvccontroller [C#] Web/ASP.NET
NuGet 配置 nugetconfig,nuget.config Config
NUnit 3 测试项 nunit-test [C#],F#,VB Test/NUnit
NUnit 3 测试项目 nunit [C#],F#,VB Test/NUnit/Desktop/Web
NUnit Playwright 测试项目 nunit-playwright [C#] Test/NUnit/Playwright/Desktop/Web
Razor 类库 razorclasslib [C#] Web/Razor/Library
Razor 组件 razorcomponent [C#] Web/ASP.NET
Razor 视图 view [C#] Web/ASP.NET
Razor 页面 page [C#] Web/ASP.NET
Web 配置 webconfig Config
Windows 窗体应用 winforms [C#],VB Common/WinForms
Windows 窗体控件库 winformscontrollib [C#],VB Common/WinForms
Windows 窗体类库 winformslib [C#],VB Common/WinForms
WPF 应用程序 wpf [C#],VB Common/WPF
WPF 用户控件库 wpfusercontrollib [C#],VB Common/WPF
WPF 类库 wpflib [C#],VB Common/WPF
WPF 自定义控件库 wpfcustomcontrollib [C#],VB Common/WPF
xUnit 测试项目 xunit [C#],F#,VB Test/xUnit/Desktop/Web
协议缓冲区文件 proto Web/gRPC
控制台应用 console [C#],F#,VB Common/Console
类库 classlib [C#],F#,VB Common/Library
解决方案文件 sln,solution Solution
辅助角色服务 worker [C#],F# Common/Worker/Web
- 详细说明
D:\DEV>dotnet new --help
Description:.NET CLI 的模板实例化命令。用法:dotnet new [<template-short-name> [<template-args>...]] [options]dotnet new [command] [options]参数:<template-short-name> 要创建的模板的短名称。<template-args> 要使用的模板特定选项。选项:-o, --output <output> 要放置生成的输出的位置。-n, --name <name> 正在创建的输出名称。如未指定名称,则使用输出目录的名称。--dry-run 如果运行给定命令行将导致模板创建,则显示将发生情况的摘要。--force 强制生成内容 (即使它会更改现有文件)。--no-update-check 在实例化模板时,禁用对模板包更新的检查。--project <project> 应用于上下文评估的项目。-v, --verbosity <LEVEL> 设置详细级别。允许的值为 q[uiet]、m[inimal]、n[ormal]、diag[nostic]。 [default: normal]-d, --diagnostics 启用诊断输出。-?, -h, --help 显示命令行帮助。命令:create <template-short-name> <template-args> 实例化具有给定短名称的模板。"dotnet new <template name>" 的别名。install <package> 安装模板包。uninstall <package> 卸载模板包。update 检查当前安装的模板包是否有更新,然后安装更新。search <template-name> 在 NuGet.org 上搜索模板。list <template-name> 列出包含指定模板名称的模板。如果未指定任何名称,则列出所有模板。details <package-identifier> 提供指定模板包的详细信息。命令将检查本地是否安装了包;如果未找到,它会搜索所配置的 NuGet 源。
(2)dotnet restore
(还原 .NET 项目中指定的依赖项)
- 功能:还原项目依赖的 NuGet 包(现代 .NET 版本中通常由
build
或run
隐式调用)。 - 显式使用场景:需强制更新依赖时(如
dotnet restore --force
)。 - 详细说明:
D:\DEV>dotnet restore --help
Description:.NET 依赖项恢复程序用法:dotnet restore [<PROJECT | SOLUTION>...] [options]参数:<PROJECT | SOLUTION> 要操作的项目或解决方案文件。如果没有指定文件,则命令将在当前目录里搜索一个文件。选项:--disable-build-servers 强制命令忽略任何永久性生成服务器。-s, --source <SOURCE> 用于还原的 NuGet 包源。--packages <PACKAGES_DIR> 要将包还原到其中的目录。--ucr, --use-current-runtime 将当前运行时用作目标运行时。--disable-parallel 防止并行还原多个项目。--configfile <FILE> 要使用的 NuGet 配置文件。--no-http-cache 禁用包的 Http 缓存。--ignore-failed-sources 将包源失败视为警告。-f, --force 强制解析所有依赖项,即使最后一次还原已经成功。这等效于删除 project.assets.json。-r, --runtime <RUNTIME_IDENTIFIER> 要还原包的目标运行时。--no-dependencies 请勿还原项目到项目引用,仅还原指定项目。-v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。--interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。--artifacts-path <ARTIFACTS_DIR> 工件路径。项目中的所有输出(包括生成、发布和打包输出)都将放到指定路径下的子文件夹中。--use-lock-file 允许生成项目锁定文件并与还原一起使用。--locked-mode 不允许更新项目锁定文件。--lock-file-path <LOCK_FILE_PATH> 写入项目锁定文件的输出位置。默认情况下, 此位置为 "PROJECT_ROOT\packages.lock.json"。--force-evaluate 即使锁定文件已存在,也强制还原以重新评估所有依赖项。-a, --arch <ARCH> 目标体系结构。-?, -h, --help 显示命令行帮助。
(3)dotnet build
(生成 .NET 项目)
- 功能:编译项目并生成程序集。
- 关键参数:
-c
:指定配置(如Release
)-r
:目标运行时(如linux-x64
)--no-restore
:跳过隐式还原。
dotnet build -c Release -r linux-x64 # 编译 Linux 平台的 Release 版本
- 详细说明:
D:\DEV>dotnet build --help
Description:.NET 生成器用法:dotnet build [<PROJECT | SOLUTION>...] [options]参数:<PROJECT | SOLUTION> 要操作的项目或解决方案文件。如果没有指定文件,则命令将在当前目录里搜索一个文件。选项:--ucr, --use-current-runtime 将当前运行时用作目标运行时。-f, --framework <FRAMEWORK> 要生成的目标框架。必须在项目文件中指定目标框架。-c, --configuration <CONFIGURATION> 用于生成项目的配置。大多数项目的默认值是 "Debug"。-r, --runtime <RUNTIME_IDENTIFIER> 要生成的目标运行时。--version-suffix <VERSION_SUFFIX> 设置生成项目时使用的 $(VersionSuffix) 属性的值。--no-restore 生成前请勿还原项目。--interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。-v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。--debug-o, --output <OUTPUT_DIR> 要放置生成项目的输出目录。--artifacts-path <ARTIFACTS_DIR> 工件路径。项目中的所有输出(包括生成、发布和打包输出)都将放到指定路径下的子文件夹中。--no-incremental 请勿使用增量生成。--no-dependencies 请勿生成项目到项目引用,仅生成指定项目。--nologo 不显示启动版权标志或版权消息。--sc, --self-contained 随应用程序一起发布 .NET 运行时,这样就不需要在目标计算机上安装运行时。默认值为 "false"。但目标为 .NET 7 或更低版本时,如果指定了运行时标识符,则默认值为 "true"。--no-self-contained 将应用程序发布为依赖框架的应用程序。目标计算机上必须安装兼容的 .NET 运行时才能运行该应用程序。-a, --arch <ARCH> 目标体系结构。--os <OS> 目标操作系统。--disable-build-servers 强制命令忽略任何永久性生成服务器。-?, -h, --help 显示命令行帮助。
(4)dotnet run (生成并运行 .NET 项目输出)
- 功能:编译并立即运行项目(默认 Debug 配置)。
- 重要参数:
--urls
:指定监听地址(如http://0.0.0.0:5000
)--environment
:设置环境(如Production
)--no-build
:跳过编译阶段。
dotnet run --urls=http://localhost:8080 --environment=Production
- 详细说明:
D:\DEV>dotnet run --help
Description:.NET 运行命令用法:dotnet run [<applicationArguments>...] [options]参数:<applicationArguments> Arguments passed to the application that is being run. []选项:-c, --configuration <CONFIGURATION> 要运行的配置。大多数项目的默认值是 "Debug"。-f, --framework <FRAMEWORK> 要运行的目标框架。必须在项目文件中指定目标框架。-r, --runtime <RUNTIME_IDENTIFIER> 要为其运行的目标运行时。--project <project> 要运行的项目文件的路径(如果只有一个项目,则默认使用当前目录)。-lp, --launch-profile <launch-profile> 启动应用程序时使用的启动配置文件名称(如果有).--no-launch-profile 请勿尝试使用 launchSettings.json 配置应用程序。--no-build 运行之前不要生成项目。Implies --no-restore.--interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。--no-restore 生成前请勿还原项目。--sc, --self-contained 随应用程序一起发布 .NET 运行时,这样就不需要在目标计算机上安装运行时。默认值为 "false"。但目标为 .NET 7 或更低版本时,如果指定了运行时标识符,则默认值为 "true"。--no-self-contained 将应用程序发布为依赖框架的应用程序。目标计算机上必须安装兼容的 .NET 运行时才能运行该应用程序。-v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。-a, --arch <ARCH> 目标体系结构。--os <OS> 目标操作系统。--disable-build-servers 强制命令忽略任何永久性生成服务器。--artifacts-path <ARTIFACTS_DIR> 工件路径。项目中的所有输出(包括生成、发布和打包输出)都将放到指定路径下的子文件夹中。-e, --environment <NAME="VALUE"> 设置环境变量的值。如果该变量不存在,则创建它;如果它已存在,则替代它。这将在隔离的进程中强制运行测试。可多次指定此参数来提供多个变量。示例:-e VARIABLE=abc-e VARIABLE="value with spaces"-e VARIABLE="value;seperated with;semicolons"-e VAR1=abc -e VAR2=def -e VAR3=ghi-?, -h, --help 显示命令行帮助。
(5)dotnet watch
(监视文件变动并启动热重载)
- 功能:监视文件变动并自动重启或热重载应用。
- 场景:开发时实时更新(如
dotnet watch run
)。 - 热重载触发:按
Ctrl+R
手动重启。
dotnet watch run --project MyApi/
- 详细说明:
D:\DEV>dotnet watch --help
Description:环境变量:DOTNET_USE_POLLING_FILE_WATCHER设置为 "1" 或 "true" 时,dotnet-watch 将轮询文件系统更改。对于某些文件系统来说(如网络共享,Docker 装载的卷和其他虚拟文件系统),这是必需的。DOTNET_WATCHdotnet-watch 在启动的所有子进程上将此变量设置为 "1"。DOTNET_WATCH_ITERATIONdotnet-watch 将此变量设置为 "1",每次递增一一个文件已更改,并且命令已重新启动。DOTNET_WATCH_SUPPRESS_EMOJIS当设置为 "1" 或 "true" 时,dotnet-watch 不会在中显示表情符号控制台输出。备注:特殊选项 "--" 用于分隔选项的末尾和将传递给子 dotnet 进程的参数的开头。例如: dotnet watch -- --verbose run尽管 dotnet-watch 支持 "--verbose" 选项,但 "--" 的使用指示应将 "--verbose" 转而视为dotnet-run 的参数。示例:dotnet watch rundotnet watch test用法:dotnet-watch [options] [[--] <additional arguments>...]]选项:-?, -h, --help Show help and usage information--version 显示版本信息-q, --quiet 抑制所有输出(警告和错误除外)--verbose 显示详细输出--no-hot-reload 抑制支持的应用的热重载。--non-interactive 在非交互模式下运行 dotnet-watch。只有在启用了热重载的情况下运行时,才支持此选项。使用此选项可防止捕获控制台输入。--list 列出所有发现的文件,而不启动观察程序。-c, --configuration <CONFIGURATION> 要运行的配置。大多数项目的默认值是 "Debug"。-f, --framework <FRAMEWORK> 要运行的目标框架。必须在项目文件中指定目标框架。-r, --runtime <RUNTIME_IDENTIFIER>--interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。--no-restore 生成前请勿还原项目。--sc, --self-contained 随应用程序一起发布 .NET 运行时,这样就不需要在目标计算机上安装运行时。默认值为 "false"。但目标为 .NET 7 或更低版本时,如果指定了运行时标识符,则默认值为 "true"。--no-self-contained 将应用程序发布为依赖框架的应用程序。目标计算机上必须安装兼容的 .NET 运行时才能运行该应用程序。-v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。-a, --arch <ARCH> 目标体系结构。--os <OS> 目标操作系统。--disable-build-servers 强制命令忽略任何永久性生成服务器。--artifacts-path <ARTIFACTS_DIR> 工件路径。项目中的所有输出(包括生成、发布和打包输出)都将放到指定路径下的子文件夹中。附加参数:Arguments passed to the application that is being run.
(6)dotnet test
(执行单元测试)
- 功能:执行单元测试。
- 参数:
--filter
:按条件筛选测试用例(如FullyQualifiedName~MyTestClass
)--collect
:启用诊断工具(如代码覆盖率--collect "XPlatCodeCoverage"
)。
dotnet test --filter "Category=Integration" # 运行标记为 Integration 的测试
- 详细说明:
D:\DEV>dotnet test --help
Description:.NET 测试驱动程序用法:dotnet test [options] [[--] <additional arguments>...]]选项:-s, --settings <SETTINGS_FILE> 运行测试时要使用的设置文件。-t, --list-tests 列出已发现的测试,而不是运行测试。-e, --environment <NAME="VALUE"> 设置环境变量的值。如果该变量不存在,则创建它;如果它已存在,则替代它。这将在隔离的进程中强制运行测试。可多次指定此参数来提供多个变量。示例:-e VARIABLE=abc-e VARIABLE="value with spaces"-e VARIABLE="value;seperated with;semicolons"-e VAR1=abc -e VAR2=def -e VAR3=ghi--filter <EXPRESSION> 运行与给定表达式匹配的测试。示例:运行优先级设置为 1 的测试: --filter "Priority = 1"运行指定全名的测试: --filter "FullyQualifiedName=Namespace.ClassName.MethodName"运行包含指定名称的测试: --filter "FullyQualifiedName~Namespace.Class"有关筛选支持的详细信息,请参阅 https://aka.ms/vstest-filtering。--test-adapter-path <ADAPTER_PATH> 自定义适配器用于测试运行的路径。-l, --logger <LOGGER> 要用于测试结果的记录器。示例:使用唯一的文件名登录 trx 格式: --记录器 trx使用指定的文件名登录 trx 格式: --记录器 "trx;LogFileName=<TestResults.trx>"有关记录器参数的详细信息,请参阅 https://aka.ms/vstest-report。-o, --output <OUTPUT_DIR> 要放置生成项目的输出目录。--artifacts-path <ARTIFACTS_DIR> 工件路径。项目中的所有输出(包括生成、发布和打包输出)都将放到指定路径下的子文件夹中。-d, --diag <LOG_FILE> 启用对指定文件的详细记录。--no-build 测试之前不要生成项目。Implies --no-restore.--results-directory <RESULTS_DIR> 要放置测试结果的目录。若不存在,将创建指定目录。--collect <DATA_COLLECTOR_NAME> 用于测试运行的数据收集器的友好名称。有关详细信息,请访问: https://aka.ms/vstest-collect--blame 在追责模式下运行测试。此选项有助于隔离导致测试主机出现故障或挂起的有问题的测试,但默认情况下它不会创建内存转储。检测到故障时,它会在 TestResults/guid/guid_Sequence.xml 中创建顺序文件,该文件捕获故障前测试运行的顺序。基于其他设置,还可以收集挂起转储或故障转储。示例:当测试时长超过默认超时时长(即 1 小时)时,对测试运行执行超时操作,当测试主机意外退出时,收集故障转储。(故障转储需要其他设置,请参阅下文。)dotnet test --blame-hang --blame-crash示例:当测试时长超过 20 分钟时,对测试运行执行超时操作并收集挂起转储。dotnet test --blame-hang-timeout 20min--blame-crash 在追责模式下运行测试,并在测试主机意外退出时收集故障转储。此选项取决于使用的 .NET 版本、错误类型和操作系统。对于托管代码中的异常,将在 .NET 5.0 及更高版本上自动收集转储。它将为 testhost 或同样在 .NET 5.0 上运行并出现故障的任何子进程生成转储。本机代码中的崩溃不会生成转储。此选项适用于 Windows、macOS 和 Linux。只能使用 Procdump 在 Windows 上收集本机代码或者面向 .NET Framework 或 .NET Core 3.1 及更早版本的故障转储。包含 procdump.exe 和 procdump64.exe 的目录必须位于 PATH 或 PROCDUMP_PATH 环境变量中。可在此处下载工具: https://docs.microsoft.com/sysinternals/downloads/procdump若要从在 .NET 5.0 或更高版本上运行的本机应用程序收集故障转储,可以通过将 VSTEST_DUMP_FORCEPROCDUMP 环境变量设置为 1 来强制使用 Procdump。表示 --blame。--blame-crash-dump-type <DUMP_TYPE> 要收集的故障转储的类型。支持的值为 full (默认)和 mini。表示 --blame-crash。--blame-crash-collect-always 允许在预期和意外的 testhost 退出时收集故障转储。--blame-hang 在追责模式下运行测试,并允许在测试超过给定超时时长时收集挂起转储。Implies --blame-hang。--blame-hang-dump-type <DUMP_TYPE> 要收集的故障转储的类型。支持的值为 full (默认值)、mini 和 none。使用“none”时,测试主机将在超时时终止,但不会收集任何转储。表示 --blame-hang。--blame-hang-timeout <TIMESPAN> 每次测试超时,超过该超时后将触发挂起转储并终止 testost 进程。默认值为 1 小时。使用以下格式指定超时值: 1.5h / 90m / 5400s / 5400000ms。如果不使用单位(例如 5400000),则假定该值以毫秒为单位。如果与数据驱动的测试一起使用,则超时行为取决于所使用的测试适配器。对于 xUnit、NUnit 和 MSTest 2.2.4+,超时会在每个测试用例后更新,对于 2.2.4 之前的 MSTest,超时用于所有测试用例。--nologo 运行测试,而不显示 Microsoft Testplatform 版权标志-c, --configuration <CONFIGURATION> 用于运行测试的配置。大多数项目的默认值是 "Debug"。-f, --framework <FRAMEWORK> 运行测试的目标框架。必须在项目文件中指定目标框架。-r, --runtime <RUNTIME_IDENTIFIER> 要为其测试的目标运行时。--no-restore 生成前请勿还原项目。--interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。-v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。-a, --arch <ARCH> 目标体系结构。--os <OS> 目标操作系统。--disable-build-servers 强制命令忽略任何永久性生成服务器。-?, -h, --help 显示命令行帮助。附加参数:Arguments passed to the application that is being run.
(7)dotnet publish
(发布 .NET 项目进行部署)
- 功能:生成可部署包。
- 部署模式:
- 独立部署:包含运行时(
--self-contained true
) - 框架依赖:依赖目标机器运行时(
--self-contained false
)。
- 独立部署:包含运行时(
dotnet publish -c Release -r win-x64 --self-contained true # 打包 Windows 独立应用
- 详细说明:
D:\DEV>dotnet publish --help
Description:适用于 .NET 平台的发布服务器用法:dotnet publish [<PROJECT | SOLUTION>...] [options]参数:<PROJECT | SOLUTION> 要操作的项目或解决方案文件。如果没有指定文件,则命令将在当前目录里搜索一个文件。选项:--ucr, --use-current-runtime 将当前运行时用作目标运行时。-o, --output <OUTPUT_DIR> 要放置已发布项目的输出目录。--artifacts-path <ARTIFACTS_DIR> 工件路径。项目中的所有输出(包括生成、发布和打包输出)都将放到指定路径下的子文件夹中。--manifest <MANIFEST> 指向目标清单文件的路径,该文件包含要通过发布步骤执行的包的列表。--no-build 发布之前不要生成项目。Implies --no-restore.--sc, --self-contained 随应用程序一起发布 .NET 运行时,这样就不需要在目标计算机上安装运行时。默认值为 "false"。但目标为 .NET 7 或更低版本时,如果指定了运行时标识符,则默认值为 "true"。--no-self-contained 将应用程序发布为依赖框架的应用程序。目标计算机上必须安装兼容的 .NET 运行时才能运行该应用程序。--nologo 不显示启动版权标志或版权消息。-f, --framework <FRAMEWORK> 要发布的目标框架。必须在项目文件中指定目标框架。-r, --runtime <RUNTIME_IDENTIFIER> 要发布的目标运行时。在创建自包含部署时使用。默认情况下发布依赖于框架的应用程序。-c, --configuration <CONFIGURATION> 发布所对应的配置。对于 NET 8.0 及更高版本的项目,默认值为 "Release",但对于较低版本的项目,默认值为 "Debug"。--version-suffix <VERSION_SUFFIX> 设置生成项目时使用的 $(VersionSuffix) 属性的值。--interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。--no-restore 生成前请勿还原项目。-v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。-a, --arch <ARCH> 目标体系结构。--os <OS> 目标操作系统。--disable-build-servers 强制命令忽略任何永久性生成服务器。-?, -h, --help 显示命令行帮助。
(8)dotnet pack
(将库项目打包为 NuGet 包)
- 功能:将库项目打包为 NuGet 包(
.nupkg
)。 - 参数:
--output
指定输出目录 。 - 详细说明:
D:\DEV>dotnet pack --help
Description:.NET Core NuGet 包打包程序用法:dotnet pack [<PROJECT | SOLUTION>...] [options]参数:<PROJECT | SOLUTION> 要操作的项目或解决方案文件。如果没有指定文件,则命令将在当前目录里搜索一个文件。选项:-o, --output <OUTPUT_DIR> 要放置生成包的输出目录。--artifacts-path <ARTIFACTS_DIR> 工件路径。项目中的所有输出(包括生成、发布和打包输出)都将放到指定路径下的子文件夹中。--no-build 打包之前不要生成项目。Implies --no-restore.--include-symbols 除了输出目录中的常规包之外,还包括带符号的包。--include-source 包括 PDB 和源文件。源文件放入 nuget 结果包的“src”文件夹中。-s, --serviceable 在包中设置可用标志。有关详细信息,请参阅 https://aka.ms/nupkgservicing。--nologo 不显示启动版权标志或版权消息。--interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。--no-restore 生成前请勿还原项目。-v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。--version-suffix <VERSION_SUFFIX> 设置生成项目时使用的 $(VersionSuffix) 属性的值。-c, --configuration <CONFIGURATION> 用于生成包的配置。默认值为 "Release"。--disable-build-servers 强制命令忽略任何永久性生成服务器。--ucr, --use-current-runtime 将当前运行时用作目标运行时。-?, -h, --help 显示命令行帮助。
(9)生命周期命令总结表
阶段 | 核心命令 | 关键功能 | 常用参数示例 |
---|---|---|---|
创建 | dotnet new | 初始化项目/解决方案 | -o , --framework |
构建 | dotnet build | 编译代码 | -c Release , -r linux-x64 |
运行 | dotnet run | 启动应用(开发环境) | --urls , --environment |
热更新 | dotnet watch | 文件监视与热重载 | run , test |
测试 | dotnet test | 执行单元测试 | --filter , --collect |
发布 | dotnet publish | 生成部署包 | --self-contained , -r win-x64 |
维护 | dotnet pack | 创建 NuGet 包 | --output nupkgs/ |
- 隐式还原机制:
build
/run
/test
等命令默认自动执行restore
,可通过--no-restore
禁用。 - 跨平台发布:使用
-r
指定运行时标识符(如linux-arm64
)生成平台特定包。