パス: ファイルパス(shared/、references/、../ln-*)は、skills リポジトリのルートからの相対パスです。CWD に見つからない場合は、この SKILL.md ディレクトリを探し、1 つ上の階層をリポジトリのルートとしてください。
ln-712-nuget-upgrader
タイプ: L3 ワーカー
カテゴリ: 7XX プロジェクトのブートストラップ
親: ln-710-dependency-upgrader
破壊的変更を自動検出して移行しながら、.NET の NuGet パッケージをアップグレードします。
概要
| 項目 | 詳細 |
|---|
| 入力 | ソリューション/プロジェクトのパス |
| 出力 | 更新された .csproj ファイル、移行レポート |
| サポート対象 | .NET 6、7、8、9、10 |
ワークフロー
視覚的なワークフローは diagram.html を参照してください。
フェーズ: 事前チェック → プロジェクトの検索 → セキュリティ監査 → 古いパッケージの確認 → 破壊的変更の特定 → アップグレードの適用 → 復元とビルド → レポート
フェーズ 0:事前チェック
| チェック項目 | 必須 | 見つからない場合の対応 |
|---|
| .csproj ファイル | はい | アップグレードを中止 |
| .sln ファイル | いいえ | 代わりに csproj の検出を使用 |
ワーカーは、コーディネーター(ln-710)がすでに Git の状態を確認し、バックアップを作成していることを前提とします。
フェーズ 1:プロジェクトの検索
検出方法
| 方法 | コマンド |
|---|
| .csproj の検索 | Get-ChildItem -Recurse -Filter *.csproj |
| ソリューションから検索 | dotnet sln list |
フェーズ 2:セキュリティ監査
コマンド
| チェック項目 | コマンド |
|---|
| 脆弱性のあるパッケージ | dotnet list package --vulnerable |
| 古いパッケージ | dotnet list package --outdated |
対応
| 重大度 | 対応 |
|---|
| 致命的 | アップグレードを中止し、報告 |
| 高 | 警告して続行 |
| 中/低 | ログにのみ記録 |
フェーズ 3:古いパッケージの確認
dotnet-outdated の使用
| 手順 | コマンド |
|---|
| ツールのインストール | dotnet tool install --global dotnet-outdated-tool |
| 確認 | dotnet outdated --output json |
フェーズ 4:破壊的変更の特定
検出
- 現在のバージョンと最新のメジャーバージョンを比較します
- breaking_changes_patterns.md を確認します
- 移行ガイドには MCP ツール(以下を参照)を使用します
よくある破壊的変更
| パッケージ | 破壊的変更のあるバージョン | 主な変更点 |
|---|
| Microsoft.EntityFrameworkCore | 8 → 9 | クエリの変更、移行形式 |
| Serilog.AspNetCore | 7 → 8 | 構成形式 |
| Swashbuckle.AspNetCore | 6 → 7 | Minimal API のサポート |
移行検索用 MCP ツール
優先順位(フォールバック戦略)
| 優先度 | ツール | 使用するタイミング |
|---|
| 1 | mcp__context7__query-docs | ライブラリのドキュメントを検索する最初の選択肢 |
| 2 | mcp__Ref__ref_search_documentation | Microsoft の公式ドキュメント |
| 3 | WebSearch | 最新情報、コミュニティの解決策 |
Context7 の使用方法
| 手順 | ツール | パラメーター |
|---|
| 1. ライブラリを検索 | mcp__context7__resolve-library-id | libraryName: "EntityFrameworkCore" |
| 2. ドキュメントを照会 | mcp__context7__query-docs | query: "EF Core 8 to 9 migration breaking changes" |
MCP Ref の使用方法
| 操作 | ツール | クエリの例 |
|---|
| 検索 | mcp__Ref__ref_search_documentation | "dotnet EntityFrameworkCore 9 migration guide" |
| 読み取り | mcp__Ref__ref_read_url | 検索結果の URL |
WebSearch のフォールバック
Context7/Ref で結果が得られない場合に使用します:
"<package> .NET <version> breaking changes migration"
"<error code> <package> fix"
フェーズ 5:アップグレードの適用
優先順位
| 優先度 | パッケージの種類 |
|---|
| 1 | SDK/ランタイム(Microsoft.NET.Sdk) |
| 2 | フレームワーク(Microsoft.AspNetCore.*) |
| 3 | EF Core(移行に影響) |
| 4 | ロギング(Serilog.*) |
| 5 | その他のパッケージ |
コマンド
| 操作 | コマンド |
|---|
| 特定のパッケージを更新 | dotnet add package <name> --version <ver> |
| すべて更新 | dotnet outdated --upgrade |
フェーズ 6:復元とビルド
コマンド
| 手順 | コマンド |
|---|
| 復元 | dotnet restore |
| ビルド | dotnet build --configuration Release |
| テスト | dotnet test |
失敗した場合
- エラーから失敗したパッケージを特定します
- Context7/Ref で移行ガイドを検索します
- 解決しない場合:パッケージをロールバックして続行します
フェーズ 7:結果を報告する
レポートのスキーマ
| フィールド | 説明 |
|---|
| solution | ソリューションのパス |
| projects[] | 更新されたプロジェクト |
| duration | 合計時間 |
| upgrades[] | 適用されたアップグレード |
| buildVerification | PASSED または FAILED |
| testResults | X 件成功、Y 件失敗 |
設定
Options:
# Upgrade scope
upgradeType: major # major | minor | patch
# Security
auditLevel: high
minimumReleaseAge: 14
# .NET specific
includePrerelease: false
targetFramework: net10.0
# Verification
runTests: true
runBuild: true
エラー処理
| エラー | 原因 | 解決策 |
|---|
| CS0246 | 型が見つからない | 代替 API を検索します |
| NU1605 | ダウングレードが検出された | パッケージの制約を確認します |
| ビルド失敗 | 破壊的変更 | Context7 を使用して移行を適用します |
参考資料
完了の定義
- すべての .csproj ファイルを検出済み(ソリューションまたは再帰的なスキャンによる)
- セキュリティ監査を完了済み(
dotnet list package --vulnerable)
- dotnet-outdated を使用して古いパッケージを特定済み
- breaking_changes_patterns.md と MCP ツールを使用して破壊的変更を検出済み
- 優先順位に従ってアップグレードを適用済み(SDK > Framework > EF Core > その他)
dotnet restore、dotnet build、dotnet test がすべて成功
- 更新されたプロジェクト、適用されたアップグレード、ビルド/テストのステータスを含むレポートを返却済み
バージョン: 1.1.0
最終更新日: 2026-01-10