dotnet10-pack-tool について
.NET 10 Hybrid Pack Toolは、Native AOTビルドとCoreCLRフォールバックを組み合わせた.NET 10ツールのパッケージ化を案内するスキルです。設定、プラットフォーム別ビルド、構成検証を扱います。
主な機能
- 01.csprojのパッケージ設定
- 02ポインターパッケージの生成
- 03RID別Native AOTビルド
- 04CoreCLRフォールバックのパッケージ化
- 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 ハイブリッドパックツール
目的
一部のプラットフォームでは最高のパフォーマンスを実現する Native AOT を使用し、すべてのプラットフォームでの互換性を確保するために CoreCLR にフォールバックする、ハイブリッド .NET 10 ツールパッケージの作成手順を説明します。
アクティブになる条件
次の内容に言及すると、自動的に読み込まれます。
- 「.NET ツールをパック」または「dotnet pack AOT」
- 「Native AOT ツール」または「ハイブリッド .NET ツール」
- 「ToolPackageRuntimeIdentifiers」
- 「.NET 10 ツールのパッケージ化」
- 「AOT を使用するクロスプラットフォーム .NET ツール」
できること
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 では OS をまたいだクロスコンパイルができません)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 対応