关于 dotnet10-pack-tool
.NET 10 Hybrid Pack Tool 指导开发者打包结合 Native AOT 与 CoreCLR 回退方案的 .NET 10 工具,涵盖包配置、按平台构建及结构验证。
主要功能
- 01配置 .csproj 打包设置
- 02生成指针包
- 03按 RID 构建 Native AOT 包
- 04打包 CoreCLR 回退版本
- 05验证包结构
适用场景
- 01打包 .NET 10 命令行工具
- 02为目标平台构建 AOT 包
- 03为未列出的平台提供回退方案
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rysweet/ amplihack --skill dotnet10-pack-tool安装后在 Claude Code 中输入/dotnet10-pack-tool确认已加载。
附带文件examples.mdreference.md
详细介绍
.NET 10 混合工具包
用途
指导你创建混合 .NET 10 工具包,在特定平台上使用 Native AOT 实现极致性能,同时通过 CoreCLR 回退实现通用兼容性。
何时激活
当你提到以下内容时,我会自动加载:
- “pack .NET tool”或“dotnet pack AOT”
- “Native AOT tool”或“hybrid .NET tool”
- “ToolPackageRuntimeIdentifiers”
- “.NET 10 tool packaging”
- “cross-platform .NET tool with AOT”
我会做什么
- 使用
ToolPackageRuntimeIdentifiers和PublishAot=true配置你的 .csproj - 生成指针包(元包)
- 为每个目标 RID 构建 Native AOT 包
- 使用
-r any创建 CoreCLR 回退 - 验证包结构
快速入门
步骤 1:配置 .csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<PackAsTool>true</PackAsTool>
<ToolCommandName>your-tool-name</ToolCommandName>
<ToolPackageRuntimeIdentifiers>any;osx-arm64;linux-arm64;linux-x64</ToolPackageRuntimeIdentifiers>
<PublishAot>true</PublishAot>
</PropertyGroup>
<PropertyGroup Condition="'$(PublishAot)' == 'true'">
<InvariantGlobalization>true</InvariantGlobalization>
<OptimizationPreference>Size</OptimizationPreference>
<StripSymbols>true</StripSymbols>
</PropertyGroup>
</Project>
步骤 2:构建包
# 1. Create pointer package (no binaries, just metadata)
dotnet pack -o ./packages
# 2. Build Native AOT for each target platform
dotnet pack -r osx-arm64 -o ./packages # On macOS
dotnet pack -r linux-arm64 -o ./packages # On Linux ARM or container
dotnet pack -r linux-x64 -o ./packages # On Linux x64 or container
# 3. Create CoreCLR fallback for all other platforms
dotnet pack -r any -p:PublishAot=false -o ./packages
步骤 3:安装并运行
dotnet tool install -g your-tool-name
your-tool-name # Auto-selects best package for platform
关键概念
| 概念 | 说明 |
|---|---|
| 指针包 | 引用特定 RID 包的元包 |
| ToolPackageRuntimeIdentifiers | 列出 RID,并创建指针结构(不会自动构建) |
-r any | 为未列出的平台提供 CoreCLR 回退 |
-p:PublishAot=false | 为 CoreCLR 回退禁用 AOT |
此模式为何有效
PublishAot=true会禁用自动生成 RID 包(AOT 无法跨操作系统交叉编译)ToolPackageRuntimeIdentifiers会创建指针包结构- 手动执行
-r <RID>构建可为每个平台生成 AOT 二进制文件 -r any -p:PublishAot=false会创建可移植的 CoreCLR 回退
文档
- reference.md:完整构建脚本、容器构建和 CI/CD 模式
- examples.md:真实示例和故障排除
要求
- 已安装 .NET 10 SDK
- Docker(用于从 macOS/Windows 进行跨平台 Linux 构建)
- 兼容 AOT 的容器:
mcr.microsoft.com/dotnet/sdk:10.0-noble-aot
评论
支持 Markdown