怪奇物语

怪奇物语

首页 新随笔 联系 管理

dotnet cli publish 发布命令

1. 框架依赖型发布(Framework-Dependent Deployment)

dotnet publish .\DemoProject.AutomationEdge\DemoProject.AutomationEdge.csproj -c Release -r win-x64 --self-contained false -o .\Publish\AutomationEdge\V1.0.0

参数解释:

  • -c Release:指定生成配置为 Release(优化版本,移除调试符号)。
  • -r win-x64:指定目标运行时为 Windows x64
  • --self-contained false不包含 .NET 运行时,依赖用户系统已安装的 .NET 环境。
  • -o ...:输出路径为 Publish\AutomationEdge\V1.0.0

最终效果:

  • 输出内容:仅应用程序文件(.exe、程序集 .dll)和第三方依赖项。
  • 体积:较小(仅应用代码)。
  • 运行条件:用户必须预先安装匹配版本的 .NET 运行时。
  • 适用场景:部署到已安装 .NET 的服务器或开发环境。

2. 自包含型发布(Self-Contained Deployment)

dotnet publish .\DemoProject.AutomationEdge\DemoProject.AutomationEdge.csproj -c Release -r win-x64 --self-contained true -o .\Publish\AutomationEdge\V1.0.0

参数解释:

  • --self-contained true包含完整的 .NET 运行时,无需用户预先安装。
  • 其他参数同上。

最终效果:

  • 输出内容:应用程序文件 + .NET 运行时(约 100MB+,取决于框架版本)。
  • 体积:较大,但可独立运行。
  • 运行条件:无需预先安装 .NET,可直接运行。
  • 适用场景:需要隔离版本的生产环境,或用户无法自行安装 .NET 的场景。

3. 单文件自包含发布(Single-File Self-Contained Deployment)

dotnet publish .\DemoProject.AutomationEdge\DemoProject.AutomationEdge.csproj -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true -o .\Publish\AutomationEdge\V4.0.0

参数解释:

  • /p:PublishSingleFile=true:将应用程序和依赖项打包为 单个 .exe 文件
  • /p:IncludeNativeLibrariesForSelfExtract=true:包含非托管库(如 .dll.so)并在运行时自动提取。
  • 其他参数同上。

最终效果:

  • 输出内容:单个 .exe 文件(包含应用代码 + .NET 运行时)。
  • 体积:较大(同自包含发布),但部署仅需一个文件。
  • 运行时行为:首次运行时,.NET 运行时会被提取到临时目录(类似压缩包解压)。
  • 适用场景:简化分发(如通过邮件、U盘传输)或需要单文件部署的场景。

4. 优化版单文件发布(Optimized Single-File Deployment)

dotnet publish .\DemoProject.AutomationEdge\DemoProject.AutomationEdge.csproj -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true /p:DebugType=None -o .\Publish\AutomationEdge\V5.0.0

参数解释:

  • /p:DebugType=None不生成调试符号文件(.pdb,进一步减小体积。
  • 其他参数同上。

最终效果:

  • 输出内容:单个 .exe 文件(不含 .pdb)。
  • 体积:比上一版略小(移除调试信息)。
  • 调试能力:无法使用调试器定位源代码,但程序功能不受影响。
  • 适用场景:生产环境部署,无需后续调试或已通过符号服务器保留调试信息。

总结对比表

发布类型 依赖项 体积 部署文件数 运行条件 适用场景
框架依赖型 依赖系统 .NET 多个文件 需预安装 .NET 开发/测试环境
自包含型 独立运行 多个文件 无需预安装 .NET 生产环境
单文件自包含 独立运行 单个 .exe 无需预安装 .NET 简化分发
优化版单文件自包含 独立运行 单个 .exe 无需预安装 .NET 生产环境(无调试需求)
posted on 2025-06-21 08:00  超级无敌美少男战士  阅读(183)  评论(0)    收藏  举报