mcpField
D
dotnet10-pack-tool

dotnet10-pack-tool

github.com/rysweet开发76129 次安装21 周前更新
代码仓库

关于 dotnet10-pack-tool

.NET 10 Hybrid Pack Tool 指导开发者打包结合 Native AOT 与 CoreCLR 回退方案的 .NET 10 工具,涵盖包配置、按平台构建及结构验证。

主要功能

  1. 01配置 .csproj 打包设置
  2. 02生成指针包
  3. 03按 RID 构建 Native AOT 包
  4. 04打包 CoreCLR 回退版本
  5. 05验证包结构

适用场景

  1. 01打包 .NET 10 命令行工具
  2. 02为目标平台构建 AOT 包
  3. 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”

我会做什么

  1. 使用 ToolPackageRuntimeIdentifiers 和 PublishAot=true 配置你的 .csproj
  2. 生成指针包(元包)
  3. 为每个目标 RID 构建 Native AOT 包
  4. 使用 -r any 创建 CoreCLR 回退
  5. 验证包结构

快速入门

步骤 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 回退

文档

要求

  • 已安装 .NET 10 SDK
  • Docker(用于从 macOS/Windows 进行跨平台 Linux 构建)
  • 兼容 AOT 的容器:mcr.microsoft.com/dotnet/sdk:10.0-noble-aot

评论

支持 Markdown