dotnet publish 命令用于发布项目以便部署到目标环境。

dotnet publish 会编译程序,读取项目文件中的依赖项,并将结果输出到一个目录。输出的内容包括:

  • .dll 程序集文件,包含中间语言(IL)。
  • .deps.json 文件,包含项目所有的依赖项。
  • .runtime.config.json 文件,指定了应用程序使用的共享运行时以及运行时的其他配置项(如:垃圾回收类型)
  • 应用程序的依赖项。这些依赖项自 NuGet 缓存复制到输出目录。

dotnet publish 命令的输出是可以直接用于部署的,也是官方唯一支持的部署方式。根据发布方式的不同,目标环境可以安装 .NET Core 共享运行时,也可以不安装。

参数

PROJECT

要发布的项目。如果未指定,默认为当前目录的项目。

// 发布当前目录中的项目
dotnet publish
// 发布指定的项目
dotnet publish app.csproj

选项

-h|--help

打印帮助信息。

-c|--configuration {Debug|Release}

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

dotnet publish -c Release

-f|--framework <FRAMEWORK>

针对指定的目标框架发布项目。

如果在项目文件中定义了多个目标框架,在发布时,必须指定针对哪一个目标框架发布。

dotnet publish -c Release -f netcoreapp2.0

-r|--runtime <RUNTIME IDENTITFIER>

针对指定的目标运行时发布项目。创建独立(自包含)部署时使用此项。默认为发布依赖框架的应用。

关于更多运行时标识符(RID)的内容,请参阅 14.1.2 节。

dotnet run -c Release -r win10-x64

-o|--output <OUTPUT_DIRECTORY>

指定发布的输出目录。

如果没有指定,对于依赖框架的部署默认目录为 ./bin/[configuration]/[framework],对于独立部署默认目录为 ./bin/[configuration]/[framework]/[runtime]

--self-contained

将 .NET Core 运行时和应用程序一起发布,这样目标机器可以不用安装运行时。如果指定了运行时标识符(RID),--self-contained 的值默认为 true。

--version-suffix <VERSION_SUFFIX>

定义项目文件中 $(VersionSuffix) 属性的值。更多内容,请参阅 dotnet build 的 --version-suffix 选项。

--manifest <manifest.xml>

指定一个或多个目标清单。

目标清单是由 dotnet store 命令生成的,它列举的包不会包含在输出目录中。多次使用 --manifest 选项可以指定多个目标清单。

更多关于运行时包存储区的内容,请参阅 14.1.3 节。

--no-restore

执行命令时不隐式调用还原。

--no-dependencies

忽略项目间引用,仅生成指定要生成的根项目。

--force

强制解析所有依赖项,即使上次还原已成功,也不例外。 这相当于删除 project.assets.json 文件。

-v|--verbosity

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