Visual Studio 2022 Preview 17.14.0 Preview 2で.NET MAUIがビルドできない(wasm-tools-net8/dotnet workload restore/microsoft.android.sdk.windows.msi.x64)対処法

Visual Studio 2022 を 17.14.0 Preview 2 に更新した直後から、.NET MAUI プロジェクトが急にビルドできなくなることがあります。出力には「wasm-tools-net8 が必要」「dotnet workload restore を実行」と出るのに、実行すると Android SDK の NuGet パッケージが見つからず失敗…。本記事では原因の整理と、最短で開発を再開するための具体的な対処をまとめます。

目次

発生する症状(エラーメッセージの典型例)

今回のトラブルは、Visual Studio 2022 Professional (64bit) を 17.14.0 Preview 2 にアップデートした後、.NET MAUI アプリのビルドが止まる、という形で表面化します。特に「Android も含めてマルチターゲットでビルドしている」「Blazor/Hybrid も触っている」といった構成だと遭遇しやすい印象があります。

ビルド出力に出る文言意味次に要求される操作
このプロジェクトをビルドするには次のワークロードが必要です: wasm-tools-net8.NET WebAssembly 関連ツール(.NET 8 向け)のワークロードが不足しているdotnet workload restore の実行
dotnet workload restore を実行してくださいプロジェクトが必要とするワークロードを SDK 側で復元しようとしているワークロードの復元(復元に失敗する場合は原因切り分け)
microsoft.android.sdk.windows.msi.x64 の特定バージョンが見つからないAndroid SDK を構成するパッケージ(MSI)が、参照先の NuGet フィードから取得できないPreview 回避・SDK 固定・NuGet 構成確認

指示通りに dotnet workload restore を実行すると、次のようなエラーで止まって先に進めない、というのが今回のポイントです。

  • 例:microsoft.android.sdk.windows.msi.x64 バージョン 35.0.50 が NuGet フィードに存在しない
  • 結果:必要なワークロードが入らないため、MAUI のビルドが成立しない

なぜ起きる?「Visual Studio と .NET SDK とワークロード」の関係

.NET MAUI は、単に「Visual Studio の機能」ではなく、.NET SDK が提供するワークロード(Workload)と密接に連動しています。MAUI/Android/iOS/WebAssembly などはワークロードとしてインストールされ、内部的には NuGet パッケージ(ワークロードマニフェストや各種 SDK パッケージ)を通じて配布されます。

ここで Preview 版の難しさが出ます。Preview 版の Visual Studio では、同梱・推奨される .NET SDK/ワークロードマニフェストが公開のタイミング差で揃っていないことがあります。つまり、マニフェストが参照するパッケージのバージョンが「まだフィードに出ていない」「一時的に取得できない」状態だと、dotnet workload restore は正しく完走できません。

今回のケースでは、Android SDK を構成する microsoft.android.sdk.windows.msi.x64 の特定バージョンが取得できないため、ワークロード全体が失敗し、その結果として MAUI のビルドが止まります。表面上は wasm-tools-net8 が足りないと言われても、実際には Android 関連の取得失敗が「復元処理の足止め」になっている、という流れです。

最初にやるべき切り分け(3分で分かるチェックリスト)

復旧を急ぐときほど、闇雲にインストールを繰り返すより、まず「何が使われているか」を把握する方が早いです。以下の3点を確認してください。

Visual Studio が Preview チャネルかどうか

  • Visual Studio Installer を開き、インストール済みの製品に Preview と付いているか確認
  • Preview と安定版(リリース版)は 並行インストールできるので、開発用は安定版に寄せる運用が可能

実際に使われている .NET SDK のバージョン

コマンドプロンプトまたは PowerShell で以下を実行し、.NET SDK のバージョンとインストール場所を確認します。

dotnet --info

プロジェクト直下に global.json がある場合、そこに指定された SDK が優先されます。Preview 更新後に SDK が切り替わったことで、ワークロード周りの挙動が変わっているケースもあります。

NuGet ソースが制限されていないか

「フィードに存在しない」は本当に“存在しない”場合もありますが、企業ネットワークなどで nuget.org が無効化されているだけ、ということもあります。まずは一覧を確認します。

dotnet nuget list source
確認項目見たいポイント想定される対処
nuget.org が有効か有効になっている/無効化されていない社内ポリシーで無効なら、許可されたフィードへ切替
プロキシ/SSL インスペクションダウンロードが途中で失敗していないか一時的に別回線で試す/プロキシ設定見直し
カスタム NuGet.Configリポジトリ単位で sources を上書きしていないか意図しない上書きを解除

結論:一番確実な回避策は「安定版 Visual Studio 2022」へ切り替える

Preview 版で発生する不具合は、Microsoft Q&A などの公式サポート窓口でも「Preview は正式サポート対象外」とされることが多く、現実的にはリリース版へ戻すのが最短です。MAUI は依存関係が多いため、ひとつのパッケージ欠落が全体を止めやすく、Preview 版ではそのリスクが上がります。

手順:Visual Studio Installer でリリースチャネルを使う

  1. Visual Studio Installer を起動する
  2. インストール済みの「Visual Studio 2022 Preview」がある場合は、そのまま残してもOK(検証用に温存)
  3. 「Visual Studio 2022」(リリース版)をインストール/更新する(可能なら最新の安定版へ)
  4. 「変更(Modify)」から、MAUI 関連ワークロードを確認して適用する

必須になりやすいワークロード(MAUI の定番セット)

実際のプロジェクト構成によって必要なものは変わりますが、今回のようなメッセージが出ている場合、以下を“入れ直す”だけで復旧することが多いです。

ワークロード名(VS Installer 表記)用途入れておくと良いケース
.NET マルチプラットフォーム アプリ UI 開発(.NET MAUI)MAUI の基本コンポーネントMAUI で Windows/Android/iOS を扱う
.NET によるモバイル開発(Android/iOS)Android/iOS のビルド・デバッグAndroid 実機/エミュレータで動かす
WebAssembly(wasm-tools)関連WebAssembly ツールBlazor Hybrid/WebView2 連携を含む構成

ここまで整えた上で、リリース版の Visual Studio でソリューションを開き直し、ビルドを試してください。Preview からリリース版へ切り替えるだけで、MAUI が再びビルドできるようになる可能性が高いです。

安定版へ切り替えても直らない場合に試す「修復」

環境が部分的に壊れている場合、ワークロードの再インストールだけでは直り切らないことがあります。次の順で“環境の整合性”を回復させると成功率が上がります。

1) ワークロードの修復(repair)

dotnet workload repair

破損したワークロードの状態を修復します。なお、今回のように「そもそも参照先のパッケージが存在しない」ケースでは、repair 自体が同じエラーで止まることもあります。その場合は Preview 起因の可能性が高く、次章の運用に切り替える方が早いです。

2) キャッシュのクリア(“見えているのに壊れている”を潰す)

dotnet nuget locals all --clear

ダウンロード途中で壊れたキャッシュが残っていると、復元がループすることがあります。クリア後に改めて restore を実行してください。

3) 必要ワークロードの明示インストール(あくまで補助)

dotnet workload install maui
dotnet workload install wasm-tools

プロジェクトによっては restore だけより install の方が状況が分かりやすいことがあります。ただし、Android SDK パッケージ自体が取得できない状態だと、ここでも同じエラーで止まります。

どうしても Preview を使いたい場合の現実的な選択肢

結論から言うと、Preview 版でワークロードの参照先パッケージが欠落している場合、ローカル側の操作だけで完全解決するのは難しいことが多いです。なぜなら、取得できないパッケージは「あなたのPCに無い」のではなく「取得先に無い」状態だからです。

それでも Preview を続ける必要があるなら、“開発を止めないための運用”に寄せるのが現実的です。

選択肢A:安定版 VS をメイン、Preview は検証用に分離する

  • 日常開発・納品ビルド:リリース版(安定)で実施
  • 新機能検証・拡張機能テスト:Preview で実施
  • 同一マシンに共存させ、ショートカットや作業フォルダを分けると混乱しにくい

選択肢B:global.json で .NET SDK を固定し、CLI の挙動を安定させる

Preview の影響で .NET SDK が新しいものに切り替わっている場合、プロジェクト直下に global.json を置き、安定して動く SDK バージョンへ固定すると回復することがあります(特にチーム開発で効果大)。

{
  "sdk": {
    "version": "8.0.xxx",
    "rollForward": "latestPatch"
  }
}
  • version は実際にインストール済みの安定版 SDK に合わせます
  • MAUI の TargetFrameworks(例:net8.0-android など)と整合している必要があります
  • VS 側の MSBuild/SDK 連携の都合で、完全に影響を断てない場合もあります

選択肢C:GitHub Issue の更新を追い、修正版が出たら更新する

今回のような SDK/ワークロード起因の不具合は、.NET SDK 側の既知問題として GitHub の dotnet/sdk リポジトリで追跡されることがあります。進捗を追うことで、修正版が出たタイミングを掴めます。

  • 修正版が出たら dotnet workload update を試す
  • Preview の次のビルド(Preview 3 など)で解消している可能性もある

“NuGet に存在しない”が実は環境側の問題だった、よくある落とし穴

同じエラーメッセージでも、原因が「本当にパッケージが未公開」ではなく、環境側で取得できていないだけ、というケースが混ざります。ここは意外と見落とされやすいので、該当する場合はチェックしてください。

社内フィードだけが有効になっている

社内のミラーや Azure Artifacts のみを参照していると、ワークロードが要求するパッケージが存在せず失敗します。dotnet nuget list source で nuget.org が無効なら、まずは有効化できるか確認します(ポリシー上難しい場合は、社内に必要パッケージをキャッシュする運用が必要です)。

プロキシ環境で一部パッケージだけ落ちる

大きな MSI パッケージは途中で切断されやすく、結果として “見つからない” 風に見えることがあります。別ネットワークで試す、時間帯を変える、セキュリティ製品の HTTPS インスペクション設定を確認するなど、通信面の切り分けも有効です。

NuGet.Config の上書きがリポジトリに入っている

リポジトリ配下の NuGet.Config が sources を上書きしていると、個人環境では問題ないはずの復元が突然失敗します。チームで同じ現象が出るなら、リポジトリ内の設定ファイルを一度点検してください。

症状確認コマンド対処の方向性
特定のPCだけ失敗するdotnet nuget list source個別の NuGet 設定・プロキシ・セキュリティ製品を疑う
チーム全員が同時期に失敗するdotnet --infoSDK/Preview 更新により全体が同じマニフェストを参照している可能性
CI(ビルドサーバー)だけ失敗するCI のログで NuGet ソースを確認ビルド環境に必要ワークロードが無い/ネットワーク制限

実務でのおすすめフロー(最短で開発を再開する)

「今日はもう作業を進めたい」という状況なら、次の順番が一番ラクです。やることが少なく、成功率が高いルートに寄せています。

  1. Visual Studio Installer を開く
  2. Preview ではなくリリース版の Visual Studio 2022 を最新に更新する
  3. ワークロード設定で .NET MAUI 関連(必要に応じて Android/iOS、WebAssembly)を再確認・適用する
  4. プロジェクトを開き直してビルド
  5. まだ失敗する場合は、dotnet nuget locals all --clear → dotnet workload repair の順で整合性回復

一方で、Preview 版は新機能検証に便利ですが、今回のように依存パッケージの公開タイミング次第でビルドが止まることがあります。本番開発・日常開発は安定版 VS を基準にし、Preview は検証用に分ける運用が安全です。

まとめ(今回のポイント)

  • Visual Studio 2022 17.14.0 Preview 2 更新後、MAUI がビルドできず wasm-tools-net8 を要求されることがある
  • dotnet workload restore が microsoft.android.sdk.windows.msi.x64 の未取得で止まると、ワークロード復元が完走できない
  • 最短・確実な回避策は 安定版(リリースチャネル)の Visual Studio 2022 に切り替えること
  • Preview を継続するなら、安定版と分離運用し、必要に応じて global.json で SDK を固定する
  • “NuGet に存在しない”はネットワークや NuGet 設定が原因のこともあるので、ソース一覧は必ず確認する

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次