Skip to content

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で、これが要件を満たしていません。

解決策

推奨方法: プロジェクトファイルでのバージョン指定

  1. プロジェクトファイル(.csproj)を編集
  2. <PropertyGroup>セクション内に以下を追加
  3. 指定バージョン: 10.0.19041.41(エラーメッセージ推奨値)
xml
<PropertyGroup>
    <!-- 既存の設定に追加 -->
    <WindowsSdkPackageVersion>10.0.19041.41</WindowsSdkPackageVersion>
</PropertyGroup>
  1. 変更保存後、プロジェクトの再ビルドを実行

複数プロジェクト対処法

ソリューション全体に適用する場合はDirectory.Build.propsに追加
全プロジェクトで一貫したSDKバージョン管理が可能

代替方法: 一時的なダウングレード

推奨されませんが、緊急回避策としてCommunity Toolkit MVVMを以前のバージョンに戻す方法

bash
# 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なのか

  1. エラーが要求する最小バージョン:10.0.19041.38
  2. 10.0.19041.41は問題を確実に解決し互換性が確認されている
  3. Windows App SDKの安定リリースバージョンとして推奨

類似ケースと公式対応

  • GitHub Issue #951 で報告済み
  • 今後も同様の問題発生時はプロパティ追加が公式推奨の解決策

補足手順: Visual Studioでの編集方法

ステップバイステップ

  1. ソリューションエクスプローラーのプロジェクトファイルを右クリック
  2. 「プロジェクトの編集」を選択
  3. <PropertyGroup>を見つけて(ない場合は新規作成)
  4. <WindowsSdkPackageVersion>設定を追加
  5. 変更保存後にプロジェクトをリロード
  6. ビルド → クリーン → リビルドの順で実行

::: 重要な確認事項

実施項目正常時状態
Windows SDKバージョン>=10.0.19041.41
.NET SDK8.0.402以上
CommunityToolkit.Mvvm8.3.1以上
:::

まとめ

このエラーはWindows SDKとCommunity Toolkitのバージョン整合性問題であり、以下の修正で解決します:

  1. プロジェクトファイルに明示的なSDKバージョン追加
    xml
    <WindowsSdkPackageVersion>10.0.19041.41</WindowsSdkPackageVersion>
  2. .NET SDKを最新版(8.0.402以降)に更新
  3. 代替策(非推奨):MVVM Toolkitをv8.2.2にダウングレード

設定変更後は必ずソリューション全体のリビルドを実施し、変更が正しく反映されていることを確認してください。