用途:为 .NET 命令行工具选择发布与分发策略,涵盖 Native AOT 单文件、依赖框架部署、自包含单文件和 dotnet tool 打包四种方式。
主要能力:提供决策矩阵对比启动时间、体积、运行时依赖与适用场景;给出标准 RID 目标(linux-x64、linux-arm64、osx-arm64、win-x64)及可选扩展目标(osx-x64、linux-musl-x64、linux-musl-arm64、win-arm64);说明单文件发布配置与体积优化手段。资料给出的典型体积:自包含未裁剪 60-80 MB,自包含+裁剪 15-30 MB,Native AOT 默认 15-25 MB,AOT+体积优化 8-15 MB,AOT+固定区域性+剥离符号 5-10 MB,依赖框架 1-5 MB。
使用方式:按 RID 发布,例如 dotnet publish -c Release -r linux-x64;依赖框架单文件加 /p:PublishSingleFile=true --self-contained false;自包含单文件将 --self-contained 设为 true;AOT 在 csproj 设置 PublishAot=true。dotnet tool 通过 NuGet 分发,用户用 dotnet tool install -g mytool 安装。建议脚本按 RID 循环发布并打包 tar.gz/zip,再用 shasum -a 256 *.tar.gz *.zip 生成校验和。
限制与注意事项:不要在 csproj 中硬编码 RuntimeIdentifier;不要同时设置 PublishSingleFile 与 PublishAot;体积敏感工具应启用 InvariantGlobalization=true;不要分发未裁剪的自包含二进制;需提供 SHA-256 校验和;不要在发布脚本硬编码密钥。Native AOT 在 x64 上交叉编译 ARM64 需平台工具链。AOT 的 MSBuild 配置、AOT 优先设计、多平台包格式(Homebrew、apt/deb、winget、Scoop)、发布 CI/CD、容器分发、通用 CI/CD 模式、工具消费端安装与清单管理均超出范围,分别见对应技能。版本假设为 .NET 8.0+,控制台应用 Native AOT 自 .NET 8 起完全支持,单文件发布自 .NET 6 起成熟。其他未提供信息暂未提供。