
Fletでflet build windowsが失敗する原因と対処法|「Visual Studio 16 2019 could not find any instance of Visual Studio」を解決する
Windows向けデスクトップアプリをFletでビルドしていると、途中までは順調なのに最後のflutter build windowsで止まり、Visual Studio 16 2019 could not find any instance of Visual Studioというエラーに悩まされることがあります。
このエラーは一見すると「Visual Studioが入っていない」ように見えますが、実際にはそれだけが原因ではありません。Flutter・Flet・CMake・Visual Studioの組み合わせが噛み合っていないことが多く、ログを丁寧に読むと解決の糸口が見えてきます。
- Fletでflet build windowsが失敗する原因と対処法|「Visual Studio 16 2019 could not find any instance of Visual Studio」を解決する
- エラーの本質は「Visual Studioがない」ではなく「要求されたビルド環境が見つからない」こと
- まず押さえたい結論
- ログから読み取れる状況
- なぜflutter doctorではVisual Studioが認識されているのにビルドに失敗するのか
- 最優先で試すべき対処法
- 1. buildフォルダとWindows生成物を削除して再生成する
- 2. FlutterのWindowsプロジェクトを作り直す
- 3. Visual Studio InstallerでC++ワークロードを確認する
- 4. CMakeキャッシュを疑う
- 5. Flutter SDKとFletの組み合わせを見直す
- 実践的な解決手順
- 今回のケースで優先度が低いもの
- なぜこのエラーが起きやすいのか
- もっとも可能性が高い原因を一言でいうと
- 解決のためのおすすめ順序
- まとめ
エラーの本質は「Visual Studioがない」ではなく「要求されたビルド環境が見つからない」こと
今回の症状で重要なのは、ビルド中に次のような流れになっている点です。
-
Pythonアプリのパッケージ化は成功している
-
アイコン画像も見つかっている
-
その後のWindowsビルド段階で失敗している
-
CMakeが
Visual Studio 16 2019を要求している -
しかし環境には
Visual Studio Community 2026 18.3.0が入っている
この時点でかなり重要なことが分かります。
つまり、PCにVisual Studio系の開発環境は存在しているのに、ビルド設定側が古いジェネレーターを探してしまっているのです。
Visual Studio 16 2019はVisual Studio 2019系を意味します。一方でインストールされているのはVisual Studio 2026系で、内部的な扱いは別物です。
そのため、CMakeやFlutterの生成したWindowsビルド設定が2019向けになっていると、実際には新しいVisual Studioが入っていても「見つからない」と判断されます。
まず押さえたい結論
このエラーの最有力原因は次のどれかです。
-
Windowsビルド用の生成ファイルが古いVisual Studio向けのまま残っている
-
Flutter/Fletが参照しているCMake設定が古い
-
Visual Studio本体はあるが、必要なC++デスクトップ開発コンポーネントが不足している
-
環境変数やキャッシュの影響で、正しいVisual Studioが認識されていない
-
FlutterのWindowsプロジェクトが現在のツールチェーンに合わせて再生成されていない
要するに、**「今の開発環境に対して、Windowsビルド設定だけが過去のVisual Studio前提で止まっている」**可能性が高いということです。
ログから読み取れる状況
今回のログでは、Flet側の前半処理は正常です。
アプリのパッケージングも通っており、エラーは純粋にWindowsネイティブビルドフェーズで発生しています。
ポイントはこの部分です。
-
flutter build windows実行 -
Building Windows application... -
CMake Error at CMakeLists.txt:3 (project): -
Generator Visual Studio 16 2019 could not find any instance of Visual Studio.
ここから分かるのは、Pythonコードそのものに問題があるわけではなく、Windows用バイナリを作るネイティブツールチェーンの設定で失敗しているということです。
つまり、アプリのロジック修正より先に、開発環境の整合性を取り直す必要があります。
なぜflutter doctorではVisual Studioが認識されているのにビルドに失敗するのか
ここが一番混乱しやすい部分です。flutter doctorではVisual Studioが認識されているのに、実際のビルドでは「Visual Studio 16 2019がない」と出る。これは矛盾しているようで、実は矛盾ではありません。
flutter doctorが見ているのは、主に「Windows開発に必要なVisual Studio環境が存在するか」です。
一方、ビルド時のCMakeは「どのVisual Studioジェネレーターでプロジェクトを生成するか」を見ています。
つまり、
-
doctor: Visual Studio自体はある -
build: でも要求された“2019用ジェネレーター”では生成できない
というズレが起きているわけです。
この差を理解すると、対処の方向性も明確になります。
必要なのはVisual Studioの再インストールだけではなく、Windowsビルド設定を現在の環境に合わせて作り直すことです。
最優先で試すべき対処法
1. buildフォルダとWindows生成物を削除して再生成する
古いジェネレーター情報が残っている場合、最も効果が高いのがこれです。
一度生成されたCMakeキャッシュやビルドファイルは、Visual Studioのバージョン変更後も残り続けることがあります。
削除対象の代表例は次の通りです。
-
build -
.dart_tool -
windows/flutter/ephemeral -
必要に応じて
windows配下の生成物
Fletプロジェクトでは、見た目以上にFlutter側のキャッシュが影響します。
そのため、単にもう一度ビルドするだけでは足りず、Windows向け生成物をリセットしてから再ビルドするのが有効です。
とくに以前にVisual Studio 2019系を使っていたPCや、Flutter/Visual Studioを更新した後の環境では、これだけで直ることが少なくありません。
2. FlutterのWindowsプロジェクトを作り直す
Windows向けのプロジェクト設定が古いままだと、CMakeListsや関連ファイルが以前の環境に引っ張られます。
そのため、Windowsターゲットを一度作り直す発想が重要です。
一般的には、Flutterプロジェクト側でWindowsサポートが有効か確認し、必要なら再生成します。
Fletは内部的にFlutterツールチェーンを利用するため、Fletのエラーに見えても、実際にはFlutter側のWindows設定更新で解決することがあります。
古い設定が残っていると、新しいVisual Studioが入っていても、生成時だけ2019を探しに行くという厄介な状態になります。
3. Visual Studio InstallerでC++ワークロードを確認する
Visual Studioが入っているだけでは不十分です。
Windowsデスクトップアプリのビルドには、通常以下の要素が必要になります。
-
Desktop development with C++
-
MSVCビルドツール
-
Windows SDK
-
CMake関連ツール
flutter doctorが一見正常でも、ワークロードや個別コンポーネントの不足で実ビルドが失敗するケースは珍しくありません。
とくにVisual Studioを軽量構成で入れている場合、IDE自体は存在していても、ネイティブビルドに必要な中身が足りないことがあります。
今回のエラー文だけを見るとジェネレーター不一致が濃厚ですが、再生成しても直らない場合は、Visual Studio InstallerでC++開発環境が揃っているかを必ず確認するべきです。
4. CMakeキャッシュを疑う
CMakeは一度生成した設定をかなり強く保持します。
そのため、環境を更新した後でも、過去のVisual Studio 16 2019設定を再利用してしまうことがあります。
この手の問題では、ソースコードをいくら触っても意味がありません。
重要なのは、CMakeが保持している“前回のビルド前提”を消すことです。
よくあるパターンは次の通りです。
-
以前はVisual Studio 2019系で構築していた
-
その後、新しいVisual Studioへ移行した
-
しかしbuildフォルダやCMakeキャッシュが残っていた
-
結果として毎回2019ジェネレーターを探して失敗する
一見するとツールのバグっぽく見えますが、実際にはキャッシュ由来の問題であることが非常に多いです。
5. Flutter SDKとFletの組み合わせを見直す
Flet 0.28.3を使っている場合、Flutter SDK側との相性も無視できません。
Fletは内部でFlutterを利用してWindows向けアプリを構築するため、Flutter側が新しすぎる、あるいは環境更新が中途半端だと、周辺ツールとの噛み合わせで問題が出ることがあります。
今回のログではFlutter 3.29.2が使われています。
この組み合わせ自体が直ちに不正とは言い切れませんが、Windowsビルド失敗時には次の観点で見直す価値があります。
-
Flutter SDKが正常に更新されているか
-
チャンネルやバージョンが中途半端に混在していないか
-
Fletの依存解決が崩れていないか
-
過去のビルド成果物が別バージョンのFlutter前提になっていないか
この種の不具合は、ツール単体よりも“ツール同士の境界”で起きやすいのが特徴です。
実践的な解決手順
ここからは、最短で切り分けるための考え方を整理します。
手順1:ビルド生成物を徹底的に消す
最初にやるべきなのは、古い設定を残さないことです。buildだけでなく、Windows関連の一時生成物も削除対象に含めるべきです。
これにより、CMakeが古いVisual Studio 2019ジェネレーターを握ったままになる状態を防げます。
手順2:FlutterのWindows設定を再生成する
次に、Windowsターゲット設定そのものを現在の環境向けに再構築します。
ここで重要なのは、単なる再実行ではなく、生成し直すという発想です。
Visual Studioの構成変更やSDK更新後は、古いプロジェクトファイルが新環境に追従しないことがあります。
手順3:Visual Studio Installerで必要コンポーネントを確認する
もし再生成後も同じエラーが出るなら、環境そのものを見ます。
IDEが起動するかどうかではなく、Windowsネイティブ開発に必要なワークロードが揃っているかが重要です。
特に確認すべきなのは以下です。
-
C++デスクトップ開発
-
Windows 10/11 SDK
-
MSVCツールセット
-
CMakeツール
ここが欠けていると、FlutterやCMakeが正しいVisual Studioを見つけても、結果的にビルドできません。
手順4:flutter doctor -vで詳細を確認する
通常表示では見えない不足や警告が、詳細表示で見つかることがあります。
Windowsビルドが目的なら、ChromeやVS Codeの警告は優先度が低いです。今回のログでもChrome未検出やVS Codeバージョン不明は本件の主因ではありません。
見るべきなのはあくまで、
-
Visual Studioの認識状況
-
Windows toolchain
-
CMakeやSDKまわりの整合性
です。
手順5:それでもダメならVisual Studioを修復する
最終手段として有効なのが修復です。
Visual Studioはアップデートや追加インストールを重ねると、検出情報が壊れることがあります。
この場合、プロジェクト側をいくら整えても改善しません。
修復で期待できるのは次の点です。
-
インストール登録情報の修正
-
破損したコンポーネントの復元
-
C++ツールチェーンの再構成
-
SDKやMSBuild周辺の整合性回復
今回のケースで優先度が低いもの
ログにはChrome関連やVS Codeのバージョン判定失敗も出ていますが、これらは本件の中心ではありません。
Chrome未検出
これはWeb開発用の警告です。
Windowsデスクトップアプリのビルド失敗とは直接関係しません。
VS Codeのバージョン不明
エディタの検出情報であり、CMakeのVisual Studioジェネレーター問題の主因にはなりにくいです。
こうした周辺警告に引っ張られると、本質的な問題解決が遅れます。
今回の主犯はあくまでCMakeが要求しているVisual Studioバージョンと、実環境の不一致です。
なぜこのエラーが起きやすいのか
FletでWindowsアプリを作る体験は非常に手軽ですが、その裏ではFlutter・Dart・CMake・Visual Studio・Windows SDKが連携しています。
つまり表面上はPython開発に見えても、配布可能なWindowsアプリを作る段階では本格的なネイティブビルド環境が必要になります。
このため、次のような環境変更後にエラーが出やすくなります。
-
Visual Studioを新しい版へ更新した
-
Flutter SDKを更新した
-
以前のプロジェクトを別PCから移した
-
古いbuild成果物をそのまま使っている
-
Windows SDKやC++ツールを追加・削除した
開発者目線では「ちゃんと入っているのに、なぜか見つからない」と感じやすいのですが、実際には設定の世代差が原因であることが多いのです。
もっとも可能性が高い原因を一言でいうと
今回のログから最も可能性が高いのは、古いWindowsビルド設定がVisual Studio 16 2019前提で残っており、現在のVisual Studio環境と合っていないことです。
なぜそう言えるのかというと、
-
Pythonアプリのパッケージ化は成功している
-
flutter doctorではVisual Studio自体は認識されている -
失敗箇所がCMakeジェネレーター選択に集中している
からです。
つまり、Fletアプリの中身よりも、Windowsビルド設定の再生成とVisual Studio構成確認が最優先になります。
解決のためのおすすめ順序
迷ったら次の順で進めるのが効率的です。
1. build系キャッシュを削除
まず古い情報を消す。これが最重要です。
2. Windowsターゲットを再生成
現在のFlutter/Visual Studio環境に合わせ直します。
3. Visual Studio InstallerでC++開発環境を確認
足りないワークロードがないかチェックします。
4. Flutter診断を詳細表示で確認
表面では見えないズレを洗い出します。
5. Visual Studio修復または再構成
キャッシュと設定で直らない場合の本命です。
まとめ
flet build windowsでVisual Studio 16 2019 could not find any instance of Visual Studioが出た場合、単純に「Visual Studioが未導入」と決めつけるのは危険です。
今回のようにVisual Studio自体は認識されているのに失敗するケースでは、CMakeやFlutterのWindowsビルド設定が古いVisual Studio向けのまま残っていることがよくあります。
重要なのは次の3点です。
-
Pythonコードの問題ではなく、Windowsネイティブビルド環境の問題である
-
flutter doctorが通っていても、CMakeジェネレーター不一致は別で起こりうる -
キャッシュ削除、Windows設定再生成、Visual StudioのC++ワークロード確認が解決の近道になる
この手のエラーは、原因さえ見抜ければ対処はそれほど複雑ではありません。
表面的なメッセージに惑わされず、**「どの段階で」「どのツールが」「どのVisual Studioを探しているか」**を整理していけば、再現性高く解決できます。
Windows向けFletアプリを安定してビルドしたいなら、アプリ本体のコードだけでなく、Flutter・CMake・Visual Studioの接続点まで含めて整備することが、最終的にはもっとも手戻りの少ない方法です。