Microsoft.Windows.SDK.NET.Ref バージョンエラーの解決方法
問題
.NET 8 を使用した MAUI アプリケーションで、以下のエラーが発生します:
エラーメッセージ
MVVMTKCFG0003 This version of the MVVM Toolkit requires 'Microsoft.Windows.SDK.NET.Ref' version '10.0.19041.38' or later. Please update to .NET SDK 8.0.109, 8.0.305 or 8.0.402 (or later). Alternatively, use a temporary 'Microsoft.Windows.SDK.NET.Ref' reference... For your project configuration, it is recommended to set the package version to '10.0.19041.41'.
発生条件
- Community Toolkit MVVM を最新版(v8.3.1)に更新後
- Windows プラットフォームでアプリを起動しようとした時
- iOS/Android では動作するが Windows 版のみ失敗
根本原因
Community Toolkit MVVM が要求する最小バージョン10.0.19041.38
に対し、プロジェクトが参照するMicrosoft.Windows.SDK.NET.Ref
のバージョンが古すぎるためです。多くの場合、参照されているデフォルトバージョンは10.0.19041.34
で、これが要件を満たしていません。
解決策
推奨方法: プロジェクトファイルでのバージョン指定
- プロジェクトファイル(.csproj)を編集
<PropertyGroup>
セクション内に以下を追加- 指定バージョン:
10.0.19041.41
(エラーメッセージ推奨値)
<PropertyGroup>
<!-- 既存の設定に追加 -->
<WindowsSdkPackageVersion>10.0.19041.41</WindowsSdkPackageVersion>
</PropertyGroup>
- 変更保存後、プロジェクトの再ビルドを実行
複数プロジェクト対処法
ソリューション全体に適用する場合はDirectory.Build.props
に追加
全プロジェクトで一貫したSDKバージョン管理が可能
代替方法: 一時的なダウングレード
推奨されませんが、緊急回避策としてCommunity Toolkit MVVMを以前のバージョンに戻す方法
# v8.2.2 は動作が確認されているバージョン
Install-Package CommunityToolkit.Mvvm -Version 8.2.2
ダウングレードの注意
- この方法は恒久的な解決策ではありません
- MVVM Toolkitの最新機能が使用できなくなります
- 長期的にはプロジェクトファイル修正を実施すべき
修正の仕組み解説
エラー発生の技術的背景
- Community Toolkitが実行時にWindows SDKバージョンを検証(ソースコード参照)
<WindowsSdkPackageVersion>
プロパティはMSBuildで特別に処理される- SDK参照のバージョンを明示的に制御
- NuGetパッケージのバージョン解決メカニズムを上書き
なぜ10.0.19041.41
なのか
- エラーが要求する最小バージョン:
10.0.19041.38
10.0.19041.41
は問題を確実に解決し互換性が確認されている- Windows App SDKの安定リリースバージョンとして推奨
類似ケースと公式対応
- GitHub Issue #951 で報告済み
- 今後も同様の問題発生時はプロパティ追加が公式推奨の解決策
補足手順: Visual Studioでの編集方法
ステップバイステップ
- ソリューションエクスプローラーのプロジェクトファイルを右クリック
- 「プロジェクトの編集」を選択
<PropertyGroup>
を見つけて(ない場合は新規作成)<WindowsSdkPackageVersion>
設定を追加- 変更保存後にプロジェクトをリロード
- ビルド → クリーン → リビルドの順で実行
::: 重要な確認事項
実施項目 | 正常時状態 |
---|---|
Windows SDKバージョン | >=10.0.19041.41 |
.NET SDK | 8.0.402以上 |
CommunityToolkit.Mvvm | 8.3.1以上 |
::: |
まとめ
このエラーはWindows SDKとCommunity Toolkitのバージョン整合性問題であり、以下の修正で解決します:
- プロジェクトファイルに明示的なSDKバージョン追加xml
<WindowsSdkPackageVersion>10.0.19041.41</WindowsSdkPackageVersion>
- .NET SDKを最新版(8.0.402以降)に更新
- 代替策(非推奨):MVVM Toolkitをv8.2.2にダウングレード
設定変更後は必ずソリューション全体のリビルドを実施し、変更が正しく反映されていることを確認してください。