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 |
生产环境(无调试需求) |