.NET Core CLI 是用于开发 .NET Core 应用程序的工具链,它具有跨平台的特性,也就是说同一个命令在不同的平台下具有一致性。它是很多高级工具,如集成开发环境(IDE),编辑器的基础。另外使用 Visual Studio Code 开发和构建 .NET Core 应用的 Docker 镜像等都需要直接使用命令,因此掌握 .NET Core CLI 对学习 .NET Core 非常重要。

安装 .NET Core SDK 后,dotnet 命令就是可用的。dotnet 是运行命令行命令的通用驱动程序,它有两个作用,运行依赖于框架的应用和执行命令。

在 dotnet 后面指定 .dll 文件的名称,则是运行依赖于框架的应用,例如 dotnet /path/to/my_app.dll。如果 dotnet 命令是从 .dll 文件所在目录执行的,可以直接使用 dotnet my_app.dll

为 dotnet 提供命令时,dotnet.exe 启动 CLI 命令执行过程。首先,驱动程序确定要使用的 SDK 版本。驱动程序默认使用最新的 SDK 版本,可以通过 --fix-version <VERSION> 选项指定要使用的 SDK 版本。确定 SDK 版本后,驱动程序执行命令。

dotnet 的用法如下:

dotnet [command] [arguments] [--additional-deps] [--additionalprobingpath] [-d|--diagnostics] [--fx-version] [-h|--help] [--info] [--roll-forward-on-no-candidate-fx] [-v|--verbosity] [--version]

command 表示命令,arguments 表示参数,以 “--” 或 “-” 开头的表示选项。

dotnet 命令分为以下几类。

基本命令

命令 功能
dotnet new 初始化 .NET 项目
dotnet restore 还原 .NET 项目的依赖
dotnet build 生成 .NET 项目
dotnet msbuild 生成 .NET 项目
dotnet run 编译并运行 .NET 项目
dotnet publish 发布 .NET 项目
dotnet test 运行单元测试
dotnet vstest 从指定的文件运行测试
dotnet pack 创建 NuGet 包
dotnet migrate 迁移基于 project.json 的项目为基于 msbuild 的项目
dotnet clean 清除生成输出
dotnet sln 修改解决方案文件
dotnet help 显示命令的在线帮助文档
dotnet store 存储程序集到运行时包存储区

项目修改命令

命令 功能
dotnet add package 添加 NuGet 包
dotnet remove package 删除 NuGet 包
dotnet add reference 添加项目引用
dotnet list reference 列出项目引用
dotnet remove reference 删除项目引用

Nuget 命令

命令 功能
dotnet nuget delete 从服务器删除或取消列出包
dotnet nuget locals 清除或列出本地 Nuget 资源
dotnet nuget push 将包推送到服务器并发布

后面的内容会详细介绍一些常用命令的用法,先从介绍 dotnet 的选项开始。

公共选项

-h|--help

打印帮助信息。如果直接跟在 dotnet 后面,打印的是 dotnet 的用法以及可用的命令,例如 dotnet -h。如果跟在命令后面打印的则是命令的帮助信息,例如 dotnet build -h 。

-v|--verbosity

设置命令的详细级别。 允许的值有 q[uiet]m[inimal]n[ormal]d[etailed]diag[nostic]

SDK 选项

--version

打印 CLI 工具的版本,只有一个版本号。

--info

打印 CLI 工具、运行时环境以及 .NET Core 共享框架的信息。

-d|--diagnostics

启用诊断输出。

运行时选项

--additionaldeps <PATH>

其他 deps.json 文件的路径。

--additionalprobingpath <PATH>

包含要进行探测的探测策略和程序集的路径。

--fx-version <VERSION>

运行应用程序所使用的已安装 .NET Core 运行时的版本。

--roll-forward-on-no-candidate-fx

在没有候选共享框架的情况下前滚。