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]。