【银河麒麟系统常识】命令:dotnet publish(发布/打包)


  • 命令:
    dotnet publish

  • 功能
    将应用程序及其依赖项打包到一个文件夹中,以便部署到生产环境。

  • 主要作用
    1. 编译应用程序
      • 执行与 dotnet build 类似的编译过程。
    2. 收集依赖项
      • 将所有依赖项(包括项目依赖和 NuGet 包)复制到输出目录。
    3. 准备部署包
      • 生成可用于部署的自包含或框架依赖的应用程序包。
    4. 优化输出
      • 可执行特定于发布的各种优化(如剪裁未使用的代码)。

  • 格式
    dotnet publish [<PROJECT | SOLUTION>...] [options]
    • [<PROJECT | SOLUTION>…] :要操作的项目或解决方案文件。如果没有指定文件,则命令将在当前目录里搜索一个文件。
    • [options]:选项

  • 选项
基本参数缩写作用示例
–output <OUTPUT_DIR>-o指定目标路径dotnet publish -o ./publish
–configuration <CONFIGURATION>-c指定发布的配置(Debug/Release),默认值为Debugdotnet publish -c Debug
–framework <FRAMEWORK>-f指定发布的目标框架dotnet publish --framework netcoreapp3.1
–runtime <RUNTIME_IDENTIFIER>-r指发布的目标运行时(win-x64/linux-x64dotnet publish --runtime linux-x64
部署模式缩写作用示例
–self-contained–sc随应用程序一起发布.NET运行时,这样就不需要在目标计算机上安装运行时。如果指定了运行时标识符,则默认值为truedotnet publish --self-contained -r linux-x64
–no-self-contained将应用程序发布为依赖框架的应用程序,目标计算机上必须安装兼容的.NET运行时才能运行该应用程序dotnet publish --no-self-contained -r win-x64
单文件发布参数(需加 -p: 前缀)缩写作用示例
-p:PublishSingleFile=true生成单个可执行文件(合并所有依赖)dotnet publish -p:PublishSingleFile=true -r win-x64
-p:IncludeNativeLibrariesForSelfExtract=true将原生库(如 .dll/.so)打包到单文件中(运行时解压)dotnet publish -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
-p:EnableCompressionInSingleFile=true启用单文件内部压缩(减小体积)dotnet publish -p:PublishSingleFile=true -p:EnableCompressionInSingleFile=true
剪裁优化参数(需加 -p: 前缀)缩写作用示例
-p:PublishTrimmed=true移除未使用的代码(IL Linker)dotnet publish -p:PublishTrimmed=true -r win-x64
-p:TrimMode=link剪裁模式(link=激进,copyused=保守),默认copyuseddotnet publish -p:PublishTrimmed=true -p:TrimMode=link
-p:TrimGraph=true启用依赖图分析(更彻底剪裁)dotnet publish -p:PublishTrimmed=true -p:TrimGraph=true
-p:TrimmerDefaultAction=link控制未标注程序集的默认剪裁行为(link=剪裁,copy=保留)dotnet publish -p:PublishTrimmed=true -p:TrimmerDefaultAction=link
原生依赖参数(需加 -p: 前缀)缩写作用示例
-p:IncludeAllContentForSelfExtract=true将配置文件、资源文件等所有内容嵌入单文件,运行时解压到临时目录dotnet publish -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true
-p:StripSymbols=true移除调试符号(减小体积)dotnet publish -p:StripSymbols=true -c Release
-p:DebugType=embedded将调试信息嵌入程序集(配合 -c Debug)dotnet publish -c Debug -p:DebugType=embedded
平台特定参数(需加 -p: 前缀)缩写作用示例
-p:PublishReadyToRun=true启用 AOT 编译(提升启动性能,增大体积)dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true
-p:ReadyToRunShowWarnings=true显示 R2R 编译警告dotnet publish -p:PublishReadyToRun=true -p:ReadyToRunShowWarnings=true
-p:PublishProtocol=FileSystem发布协议(默认为 FileSystem,可选 Sockets 等)dotnet publish -p:PublishProtocol=FileSystem
高级 MSBuild 参数(需加 -p: 前缀)缩写作用示例
-p:DefineConstants=“SYMBOL”定义编译符号(多个符号用分号分隔(如 “DEBUG;TRACE”))dotnet publish -p:DefineConstants="DEMO_MODE"
-p:AssemblyVersion=1.0.0手动指定程序集版本dotnet publish -p:AssemblyVersion=2.1.0.3
-p:CopyOutputSymbolsToPublishDirectory=false禁止复制.pdb调试符号到发布目录dotnet publish -c Release -p:CopyOutputSymbolsToPublishDirectory=false
其他参数缩写作用示例
–version-suffix <VERSION_SUFFIX>为程序集版本添加后缀dotnet publish --version-suffix "beta1" 需在.csproj中设置<VersionPrefix>,生成格式:1.0.0-beta1
–use-current-runtime将当前运行时用作目标运行时dotnet publish --use-current-runtime 不能与-r同时使用
–manifest <MANIFEST>指向目标清单文件的路径,该文件包含要通过发布步骤执行的包的列表dotnet publish --manifest ./publish/profile.xml
–no-build跳过编译,直接发布已生成的程序dotnet publish --no-build
–nologo不显示启动版权标志或版权消息dotnet publish --nologo
–interactive允许命令停止和等待用户输入或操作(例如:用以完成身份验证)dotnet publish --interactive
–no-restore跳过自动还原 NuGet 包dotnet publish --no-restore
–verbosity <LEVEL>-v控制日志详细程度(quiet/minimal/normal/detailed/diagnosticdotnet publish -v minimal
–arch <arch>-a目标体系结构(x64/arm64dotnet publish --arch x64
–os <os>目标操作系统(linux/windowsdotnet publish --os linux
–help-?,-h显示命令行帮助dotnet publish -h

  • 组合使用示例
# 指定Release模式、指定linux-x64版本、将.NET打包进发布文件、打包单个文件、启动裁剪模式删除无用代码、指定版本号
dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true -p:AssemblyVersion=1.0.0

  • 示例
    • 在执行指令前,先通过cd命令切换到项目路径下;
    • 发布的文件路径在.../publish/中;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值