admin管理员组文章数量:1642471
dotnet publish
发布时主要关注一下这几个配置
配置(Relese - Any CPU):-c Relese ,根据配置不同后面的可能是-c Debug/Test
目标框架(netcoreapp3.1):-f netcoreapp3.1 ,根据目标框架进行填写
部署模式(框架依赖):--self-contained false,框架依赖为false,独立部署为true
目标运行时(win-x64): -r win-x64 ,根据目标运行时选择进行填写,部署【可移植】时该命令不需要加
因此以上的配置部署命令为 :dotnet publish -c Release -r win-x64 -f netcoreapp3.1 --self-contained false
以下转载自https://docs.microsoft/zh-cn/dotnet/core/tools/dotnet-publish
dotnet publish
- 2021/02/03本文适用于: ✔️ .NET Core 2.1 SDK 及更高版本
“属性”
dotnet publish
- 将应用程序及其依赖项发布到文件夹以部署到托管系统。
摘要
.NET Core CLI复制
dotnet publish [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
[--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
[-p:PublishReadyToRun=true] [-p:PublishSingleFile=true] [-p:PublishTrimmed=true]
[-r|--runtime <RUNTIME_IDENTIFIER>] [--self-contained [true|false]]
[--no-self-contained] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet publish -h|--help
描述
dotnet publish
编译应用程序、读取 project 文件中指定的所有依赖项并将生成的文件集发布到目录。 输出包括以下资产:
- 扩展名为 dll 的程序集中的中间语言 (IL) 代码。
- 包含项目所有依赖项的 .deps.json 文件。
- .runtimeconfig.json 文件,其中指定了应用程序所需的共享运行时,以及运行时的其他配置选项(例如垃圾回收类型)。
- 应用程序的依赖项,将这些依赖项从 NuGet 缓存复制到输出文件夹。
dotnet publish
命令的输出可供部署至托管系统(例如服务器、电脑、Mac、笔记本电脑)以便执行。 若要准备用于部署的应用程序,这是唯一正式受支持的方法。 根据项目指定的部署类型,托管系统不一定已在其上安装 .NET 共享运行时。 有关详细信息,请参阅使用 .NET CLI 发布 .NET 应用。
隐式还原
无需运行 dotnet restore
,因为它由所有需要还原的命令隐式运行,如 dotnet new
、dotnet build
、dotnet run
、dotnet test
、dotnet publish
和 dotnet pack
。 若要禁用隐式还原,请使用 --no-restore
选项。
在执行显式还原有意义的某些情况下,例如 Azure DevOps Services 中的持续集成生成中,或在需要显式控制还原发生时间的生成系统中,dotnet restore
命令仍然有用。
有关如何使用 NuGet 源的信息,请参阅 dotnet restore
文档。
MSBuild
dotnet publish
命令调用 MSBuild,后者会调用 Publish
目标。 任何传递给 dotnet publish
的参数都将传递给 MSBuild。 -c
和 -o
参数分别映射到 MSBuild 的 Configuration
和 PublishDir
属性。
dotnet publish
命令接受 MSBuild 选项,如用来设置属性的 -p
和用来定义记录器的 -l
。 例如,可以使用以下格式设置 MSBuild 属性:-p:<NAME>=<VALUE>
。
还可通过引用 .pubxml 文件(自 .NET Core 3.1 SDK 起可用)设置与发布相关的属性。 例如:
.NET Core CLI复制
dotnet publish -p:PublishProfile=FolderProfile
前面的示例使用 <project_folder>/Properties/PublishProfiles 文件夹中的 FolderProfile.pubxml 文件。 如果在设置 PublishProfile
属性时指定路径和文件扩展名,则它们会被忽略。 默认情况下,MSBuild 会在 Properties/PublishProfiles 文件夹中查找,并假定 .pubxml 文件扩展名。 若要指定包含扩展名的路径和文件名,请设置 PublishProfileFullPath
属性,而不是 PublishProfile
属性。
有关更多信息,请参见以下资源:
- MSBuild 命令行参考
- 用于 ASP.NET Core 应用部署的 Visual Studio 发布配置文件 (.pubxml)
- dotnet msbuild
自变量
-
PROJECT|SOLUTION
要发布的项目或解决方案。
-
PROJECT
是 C#、F# 或 Visual Basic 项目文件的路径和文件名,或包含 C#、F# 或 Visual Basic 项目文件的目录的路径。如果未指定目录,则默认为当前目录。 -
SOLUTION
是解决方案文件(扩展名为 .sln)的路径和文件名,或包含解决方案文件的目录的路径。 如果未指定目录,则默认为当前目录。 自 .NET Core 3.0 SDK 起可用。
-
选项
-
-c|--configuration <CONFIGURATION>
定义生成配置。 大多数项目的默认配置为
Debug
,但你可以覆盖项目中的生成配置设置。 -
-f|--framework <FRAMEWORK>
为指定的目标框架发布应用程序。 必须在项目文件中指定目标框架。
-
--force
强制解析所有依赖项,即使上次还原已成功,也不例外。 指定此标记等同于删除 project.assets.json 文件。
-
-h|--help
打印出有关命令的简短帮助。
-
--interactive
允许命令停止并等待用户输入或操作。 例如,完成身份验证。 自 .NET Core 3.0 SDK 起可用。
-
--manifest <PATH_TO_MANIFEST_FILE>
指定一个或多个目标清单,用于剪裁与应用程序一同发布的一组包。 清单文件是
dotnet store
命令输出的一部分。 若要指定多个清单,请为每个清单添加一个--manifest
选项。 -
--no-build
发布前不生成项目。 还将隐式设置
--no-restore
标记。 -
--no-dependencies
忽略项目间引用,仅还原根项目。
-
--nologo
不显示启动版权标志或版权消息。 自 .NET Core 3.0 SDK 起可用。
-
--no-restore
运行此命令时不执行隐式还原。
-
-o|--output <OUTPUT_DIRECTORY>
指定输出目录的路径。
如果未指定,则默认为依赖框架的可执行文件和跨平台二进制文件的路径 [project_file_folder]/bin/[configuration]/[framework]/publish/。 默认为独立的可执行文件路径 [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/。
在 Web 项目中,如果输出文件夹位于项目文件夹,则连续的
dotnet publish
命令将产生嵌套的输出文件夹。 例如,如果项目文件夹是“myproject”,发布输出文件夹是“myproject/publish”,并且运行dotnet publish
两次,则第二次运行会将“.config”和“.json”等内容文件放入“myproject/publish/publish” 。 若要避免嵌套发布文件夹,请指定一个不在项目文件夹正下方的发布文件夹,或从项目中排除发布文件夹。 若要排除名为“publishoutput”的发布文件夹,请将以下元素添加到“.csproj”文件中的PropertyGroup
元素中 :XML复制
<DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
-
.NET Core 3.x SDK 和更高版本
如果在发布项目时指定相对路径,则生成的输出目录相对于当前工作目录,而不是项目文件位置。
如果在发布解决方案时指定相对路径,则所有项目的所有输出都会进入相对于当前工作目录的指定文件夹中。 若要使发布输出进入每个项目的单独文件夹,请使用 msbuild
PublishDir
属性(而不是--output
选项)指定相对路径。 例如,dotnet publish -p:PublishDir=.\publish
将每个项目的发布输出发送到包含项目文件的文件夹下的publish
文件夹中。 -
.NET Core 2.x SDK
如果在发布项目时指定相对路径,则生成的输出目录相对于项目文件位置,而不是当前工作目录。
如果在发布解决方案时指定相对路径,则每个项目的输出会进入相对于项目文件位置的单独文件夹中。 如果在发布解决方案时指定绝对路径,则所有项目的所有发布输出都会进入指定文件夹中。
-
-
-p:PublishReadyToRun=true
以 ReadyToRun (R2R) 格式编译应用程序集。 R2R 是一种预先 (AOT) 编译形式。 有关详细信息,请参阅 ReadyToRun 图像。 自 .NET Core 3.0 SDK 起可用。
若要查看有关缺少的依赖项可能导致运行时失败的警告,请使用
-p:PublishReadyToRunShowWarnings=true
。建议在发布配置文件中而不是在命令行中指定此选项。 有关详细信息,请参阅 MSBuild。
-
-p:PublishSingleFile=true
将应用打包到特定于平台的单个文件可执行文件中。 该可执行文件是自解压缩文件,包含运行应用所需的所有依赖项(包括本机依赖项)。 首次运行应用时,应用程序将根据应用名称和生成标识符自解压缩到一个目录中。 再次运行应用程序时,启动速度将变快。 除非使用了新版本,否则应用程序无需再次进行自解压缩。 自 .NET Core 3.0 SDK 起可用。
有关单文件发布的详细信息,请参阅单文件捆绑程序设计文档。
建议在发布配置文件中而不是在命令行中指定此选项。 有关详细信息,请参阅 MSBuild。
-
-p:PublishTrimmed=true
在发布自包含的可执行文件时,剪裁未使用的库以减小应用的部署大小。 有关详细信息,请参阅剪裁自包含部署和可执行文件。 从 .NET Core 3.0 开始,SDK 作为预览功能提供。
建议在发布配置文件中而不是在命令行中指定此选项。 有关详细信息,请参阅 MSBuild。
-
--self-contained [true|false]
.NET 运行时随应用程序一同发布,因此无需在目标计算机上安装运行时。 如果指定了运行时标识符,并且项目是可执行项目(而不是库项目),则默认值为
true
。 有关详细信息,请参阅 .NET 应用程序发布和使用 .NET CLI 发布 .NET 应用。如果在未指定
true
或false
的情况下使用此选项,则默认值为true
。 在这种情况下,请不要紧接在--self-contained
后放置解决方案或项目参数,因为该位置需要true
或false
。 -
--no-self-contained
等效于
--self-contained false
。 自 .NET Core 3.0 SDK 起可用。 -
-r|--runtime <RUNTIME_IDENTIFIER>
发布针对给定运行时的应用程序。 有关运行时标识符 (RID) 的列表,请参阅 RID 目录。 有关详细信息,请参阅 .NET 应用程序发布和使用 .NET CLI 发布 .NET 应用。
-
-v|--verbosity <LEVEL>
设置命令的详细级别。 允许使用的值为
q[uiet]
、m[inimal]
、n[ormal]
、d[etailed]
和diag[nostic]
。 默认值是minimal
。 -
--version-suffix <VERSION_SUFFIX>
定义版本后缀来替换项目文件的版本字段中的星号 (
*
)。
示例
-
为当前目录中的项目创建一个依赖框架的跨平台二进制文件:
.NET Core CLI复制
dotnet publish
自 .NET Core 3.0 SDK 起,此示例还为当前平台创建依赖框架的可执行文件。
-
针对特定运行时,为当前目录中的项目创建独立可执行文件:
.NET Core CLI复制
dotnet publish --runtime osx.10.11-x64
项目文件中必须包含 RID。
-
针对特定平台,为当前目录中的项目创建依赖框架的可执行文件:
.NET Core CLI复制
dotnet publish --runtime osx.10.11-x64 --self-contained false
项目文件中必须包含 RID。 此示例适用于 .NET Core 3.0 SDK 及更高版本。
-
针对特定运行时和目标框架,在当前目录中发布项目:
.NET Core CLI复制
dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
-
发布指定的项目文件:
.NET Core CLI复制
dotnet publish ~/projects/app1/app1.csproj
-
发布当前应用程序,但在还原操作期间不还原项目到项目 (P2P) 引用,只还原根项目:
.NET Core CLI复制
dotnet publish --no-dependencies
版权声明:本文标题:『.NET Core CLI工具文档』dotnet-publish 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1725845321a1045338.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论