dotnet publishdotnet publish

本文内容

本文适用于:✓ .NET Core 1.x SDK ✓ .NET Core 2.x SDK

nameName

dotnet publish - 将应用程序及其依赖项打包到文件夹以部署到托管系统。

摘要Synopsis

  1. dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [--force] [--manifest] [--no-build] [--no-dependencies]
  2. [--no-restore] [-o|--output] [-r|--runtime] [--self-contained] [-v|--verbosity] [--version-suffix]
  3. dotnet publish [-h|--help]
  1. dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [--force] [--manifest] [--no-dependencies]
  2. [--no-restore] [-o|--output] [-r|--runtime] [--self-contained] [-v|--verbosity] [--version-suffix]
  3. dotnet publish [-h|--help]
  1. dotnet publish [<PROJECT>] [-c|--configuration] [-f|--framework] [-o|--output] [-r|--runtime] [-v|--verbosity]
  2. [--version-suffix]
  3. dotnet publish [-h|--help]

说明Description

dotnet publish 编译应用程序、读取 project 文件中指定的所有依赖项并将生成的文件集发布到目录。输出包括以下资产:

  • 扩展名为 dll 的程序集中的中间语言 (IL) 代码。
  • 包含项目所有依赖项的 .deps.json 文件 。
  • .runtimeconfig.json 文件,其中指定了应用程序所需的共享运行时,以及运行时的其他配置选项(例如,垃圾回收类型)。
  • 应用程序的依赖项,将这些依赖项从 NuGet 缓存复制到输出文件夹。dotnet publish 命令的输出可供部署至托管系统(例如服务器、电脑、Mac、笔记本电脑)以便执行。若要准备用于部署的应用程序,这是唯一正式受支持的方法。根据项目指定的部署的类型,托管系统不一定已在其上安装 .NET Core 共享运行时。有关详细信息,请参阅 .NET Core 应用程序部署有关已发布应用程序的目录结构,请参阅目录结构

备注

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

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

自变量Arguments

PROJECT

要发布的项目。它是 C#、F# 或 Visual Basic 项目文件的路径和文件名,或包含 C#、F# 或 Visual Basic 项目文件的目录的路径。如果未指定,则默认为当前目录。

选项Options

-c|—configuration {Debug|Release}

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

-f|—framework <FRAMEWORK>

为指定的目标框架发布应用程序。必须在项目文件中指定目标框架。

—force

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

-h|—help

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

—manifest <PATH_TO_MANIFEST_FILE>

指定一个或多个目标清单,用于剪裁与应用程序一同发布的一组包。清单文件是 dotnet store 命令输出的一部分。若要指定多个清单,请为每个清单添加一个 —manifest 选项。自 .NET Core 2.0 SDK 起,可以使用此选项。

—no-build

发布前不生成项目。还将隐式设置 —no-restore 标记。

—no-dependencies

忽略项目间引用,仅还原根项目。

—no-restore

运行此命令时不执行隐式还原。

-o|—output <OUTPUT_DIRECTORY>

指定输出目录的路径。如未指定,对于依赖于框架的部署,将默认为 ./bin/[configuration]/[framework]/publish/ 或对于独立部署,将默认为 ./bin/[configuration]/[framework]/[runtime]/publish/ 。如果路径是相对的,则生成的输出目录与项目文件位置相关,而与当前工作目录不相关。

—self-contained

与应用程序一同发布 .NET Core 运行时,因此无需在目标计算机上安装运行时。如果指定了运行时标识符,默认值为 true若要详细了解不同的部署类型,请参阅 .NET Core 应用程序部署

-r|—runtime <RUNTIME_IDENTIFIER>

发布针对给定运行时的应用程序。这将在创建独立部署 (SCD) 时使用。有关运行时标识符 (RID) 的列表,请参阅 RID 目录默认为发布依赖于框架的部署 (FDD)

-v|—verbosity <LEVEL>

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

—version-suffix <VERSION_SUFFIX>

定义版本后缀来替换项目文件的版本字段中的星号 (*)。

-c|—configuration {Debug|Release}

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

-f|—framework <FRAMEWORK>

为指定的目标框架发布应用程序。必须在项目文件中指定目标框架。

—force

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

-h|—help

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

—manifest <PATH_TO_MANIFEST_FILE>

指定一个或多个目标清单,用于剪裁与应用程序一同发布的一组包。清单文件是 dotnet store 命令输出的一部分。若要指定多个清单,请为每个清单添加一个 —manifest 选项。自 .NET Core 2.0 SDK 起,可以使用此选项。

—no-dependencies

忽略项目间引用,仅还原根项目。

—no-restore

运行此命令时不执行隐式还原。

-o|—output <OUTPUT_DIRECTORY>

指定输出目录的路径。如未指定,对于依赖于框架的部署,将默认为 ./bin/[configuration]/[framework]/publish/ 或对于独立部署,将默认为 ./bin/[configuration]/[framework]/[runtime]/publish/ 。如果路径是相对的,则生成的输出目录与项目文件位置相关,而与当前工作目录不相关。

—self-contained

与应用程序一同发布 .NET Core 运行时,因此无需在目标计算机上安装运行时。如果指定了运行时标识符,默认值为 true若要详细了解不同的部署类型,请参阅 .NET Core 应用程序部署

-r|—runtime <RUNTIME_IDENTIFIER>

发布针对给定运行时的应用程序。这将在创建独立部署 (SCD) 时使用。有关运行时标识符 (RID) 的列表,请参阅 RID 目录默认为发布依赖于框架的部署 (FDD)

-v|—verbosity <LEVEL>

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

—version-suffix <VERSION_SUFFIX>

定义版本后缀来替换项目文件的版本字段中的星号 (*)。

-c|—configuration {Debug|Release}

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

-f|—framework <FRAMEWORK>

为指定的目标框架发布应用程序。必须在项目文件中指定目标框架。

-h|—help

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

—manifest <PATH_TO_MANIFEST_FILE>

指定一个或多个目标清单,用于剪裁与应用程序一同发布的一组包。清单文件是 dotnet store 命令输出的一部分。若要指定多个清单,请为每个清单添加一个 —manifest 选项。自 .NET Core 2.0 SDK 起,可以使用此选项。

-o|—output <OUTPUT_DIRECTORY>

指定输出目录的路径。如未指定,对于依赖于框架的部署,将默认为 ./bin/[configuration]/[framework]/publish/ 或对于独立部署,将默认为 ./bin/[configuration]/[framework]/[runtime]/publish/ 。如果路径是相对的,则生成的输出目录与项目文件位置相关,而与当前工作目录不相关。

-r|—runtime <RUNTIME_IDENTIFIER>

发布针对给定运行时的应用程序。这将在创建独立部署 (SCD) 时使用。有关运行时标识符 (RID) 的列表,请参阅 RID 目录默认为发布依赖于框架的部署 (FDD)

-v|—verbosity <LEVEL>

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

—version-suffix <VERSION_SUFFIX>

定义版本后缀来替换项目文件的版本字段中的星号 (*)。

示例Examples

在当前目录中发布项目:

dotnet publish

使用指定的项目文件发布应用程序:

dotnet publish ~/projects/app1/app1.csproj

使用 netcoreapp1.1 框架发布当前目录中的项目:

dotnet publish —framework netcoreapp1.1

使用 netcoreapp1.1 框架和 OS X 10.10 的运行时发布当前应用程序(必须在项目文件中列出此 RID)。

dotnet publish —framework netcoreapp1.1 —runtime osx.10.11-x64

发布当前应用程序,但在还原操作期间不还原项目到项目 (P2P) 引用,只还原根项目(.NET Core SDK 2.0 及更高版本):

dotnet publish —no-dependencies

请参阅See also