dotnet 生成dotnet build

本文内容

本文适用于:✓ .NET Core 1.x SDK 及更高版本

nameName

dotnet build - 生成项目及其所有依赖项。

摘要Synopsis

  1. dotnet build [<PROJECT>|<SOLUTION>] [-c|--configuration] [-f|--framework] [--force] [--interactive] [--no-dependencies]
  2. [--no-incremental] [--no-restore] [--nologo] [-o|--output] [-r|--runtime] [-v|--verbosity] [--version-suffix]
  3. dotnet build [-h|--help]

说明Description

dotnet build 命令将项目及其依赖项生成为一组二进制文件。二进制文件包括中间语言 (IL) 文件(带 .dll 扩展名)和用于调试的符号文件(带 .pdb 扩展名)中的项目的代码。生成依赖项 JSON 文件 (.deps.json ),该文件列出了应用程序的依赖项。生成 .runtimeconfig.json 文件,该文件指定应用程序的共享运行时及其版本。

如果项目有第三方依赖项(如来自 NuGet 的库),将从 NuGet 缓存解析这些依赖项,并且它们不适用于项目的生成输出。考虑到这一点,dotnet build 的产品还未准备好转移到另一台计算机进行运行。这与 .NET Framework 的行为相反,后者在构建可执行项目(一个应用程序)时,将生成可在任何已安装 .NET Framework 的计算机上运行的输出。为了能够获得相似的 .NET Core 使用体验,需要使用 dotnet publish 命令。有关详细信息,请参阅 .NET Core 应用程序部署

构建需要 project.assets.json 文件,该文件列出了你的应用程序的依赖项。此文件在 dotnet restore 执行时创建。如果资产文件未就位,那么工具将无法解析引用程序集,进而导致错误生成。使用 .NET Core 1.x SDK,需要在运行 dotnet build 之前显式运行 dotnet restore自 .NET Core 2.0 SDK 起,dotnet restoredotnet build 运行时隐式运行。若要在运行 build 命令时禁用隐式还原,可以传递 —no-restore 选项。

备注

从 .NET Core 2.0 开始,无需运行 dotnet restore,因为它由需有还原的所有命令隐式运行,如 dotnet builddotnet run在执行显式还原有意义的某些情况下,例如 Azure DevOps Services 中的持续集成生成中,或在需要显式控制还原发生时间的生成系统中,它仍然是有效的命令。

以长格式传递命令时,该命令也支持 dotnet restore 选项(例如,—source)。不支持缩写选项,例如 -s

项目是否可执行由项目文件中的 <OutputType> 属性决定。以下示例显示生成可执行代码的项目:

  1. <PropertyGroup>
  2. <OutputType>Exe</OutputType>
  3. </PropertyGroup>

若要生成库,请省略 <OutputType> 属性。生成输出中的主要区别在于,针对某个库的 IL DLL 不包含入口点,并且不能执行。

MSBuildMSBuild

dotnet build 使用 MSBuild 生成项目,因此它支持并行生成和增量生成。有关详细信息,请参阅增量生成

除其自己的选项外,dotnet build 命令也接受 MSBuild 选项,如用来设置属性的 -p 或用来定义记录器的 -l有关这些选项的详细信息,请参阅 MSBuild 命令行参考或者也可以使用 dotnet msbuild 命令。

运行 dotnet build 相当于 dotnet msbuild -restore -target:Build

自变量Arguments

PROJECT | SOLUTION

要生成的项目或解决方案文件。如果未指定项目或解决方案文件,MSBuild 会在当前工作目录中搜索文件扩展名以 projsln 结尾的文件并使用该文件。

选项Options

  • -c|—configuration {Debug|Release}

定义生成配置。默认值为 Debug

  • -f|—framework <FRAMEWORK>

编译特定框架。必须在项目文件中定义该框架。

  • —force

强制解析所有依赖项,即使上次还原已成功,也不例外。指定此标记等同于删除 project.assets.json 文件 。自 .NET Core 2.0 SDK 起可用。

  • -h|—help

打印出有关命令的简短帮助。

  • —interactive

允许命令停止并等待用户输入或操作。例如,完成身份验证。自 .NET Core 3.0 SDK 起可用。

  • —no-dependencies

忽略项目到项目 (P2P) 引用,并仅生成指定的根项目。

  • —no-incremental

将生成标记为对增量生成不安全。此标记关闭增量编译,并强制完全重新生成项目依赖项关系图。

  • —no-restore

在生成期间不执行隐式还原。自 .NET Core 2.0 SDK 起可用。

  • —nologo

不显示启动版权标志或版权消息。自 .NET Core 3.0 SDK 起可用。

  • -o|—output <OUTPUT_DIRECTORY>

放置生成二进制文件的目录。指定此选项时还需要定义 —framework。如果未指定,则默认路径为 ./bin/<configuration>/<framework>/

  • -r|—runtime <RUNTIME_IDENTIFIER>

指定目标运行时。有关运行时标识符 (RID) 的列表,请参阅 RID 目录

  • -v|—verbosity <LEVEL>

设置 MSBuild 详细级别。允许使用的值为 q[uiet]m[inimal]n[ormal]d[etailed]diag[nostic]。默认值为 minimal

  • —version-suffix <VERSION_SUFFIX>

设置生成项目时使用的 $(VersionSuffix) 属性的值。这仅在未设置 $(Version) 属性时有效。然后,$(Version) 设置为 $(VersionPrefix)$(VersionSuffix) 组合,并用短划线分隔。

示例Examples

  • 生成项目及其依赖项:
  1. dotnet build
  • 使用“发布”配置生成项目及其依赖项:
  1. dotnet build --configuration Release
  • 针对特定运行时(本例中为 Ubuntu 18.04)生成项目及其依赖项:
  1. dotnet build --runtime ubuntu.18.04-x64
  • 生成项目,并在还原操作过程中使用指定的 NuGet 包源(.NET Core 2.0 SDK 及更高版本):
  1. dotnet build --source c:\packages\mypackages
  • 生成项目并设置版本 1.2.3.4 作为使用 -p MSBuild 选项的生成参数:
  1. dotnet build -p:Version=1.2.3.4