From 8155d782307e9af8532f315ed87d298cd52d457e Mon Sep 17 00:00:00 2001 From: Simone Date: Sun, 17 May 2026 22:00:10 +0200 Subject: [PATCH] fix(build): require VC C++ tools in vswhere query Two 18.x installs coexisted: VS2026 Community (full IDE, has VC v180) and a BuildTools at (x86)\Microsoft Visual Studio\18\BuildTools that has MSBuild but NO VC v180 targets. The vswhere query only required Microsoft.Component.MSBuild, so -latest could (and did) return the C++-less BuildTools -> MSB4019. Also require Microsoft.VisualStudio.Component.VC.Tools.x86.x64 so only installs with the C++ toolset match; the broken BuildTools is excluded and 2026\Community is selected. CI VM BuildTools has the C++ workload so it still matches. Co-Authored-By: Claude Opus 4.7 --- tools/legacy/build_plugin_2501_vs2022.py | 1 + tools/legacy/build_plugin_2501_vs2026.py | 1 + tools/legacy/build_plugin_2600_vs2026.py | 1 + tools/legacy/build_plugin_2601_vs2026.py | 1 + tools/legacy/build_plugin_vs2022.py | 1 + tools/legacy/build_plugin_vs2026.py | 1 + tools/legacy/build_plugin_zstd_vs2026.py | 1 + 7 files changed, 7 insertions(+) diff --git a/tools/legacy/build_plugin_2501_vs2022.py b/tools/legacy/build_plugin_2501_vs2022.py index a60a0f3..59f069d 100644 --- a/tools/legacy/build_plugin_2501_vs2022.py +++ b/tools/legacy/build_plugin_2501_vs2022.py @@ -143,6 +143,7 @@ def _find_msbuild_via_vswhere(vs_version: str) -> 'Optional[Tuple[Path, str, str '-latest', '-prerelease', '-requires', 'Microsoft.Component.MSBuild', + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', '-find', r'MSBuild\**\Bin\MSBuild.exe', ], capture_output=True, text=True, timeout=15, diff --git a/tools/legacy/build_plugin_2501_vs2026.py b/tools/legacy/build_plugin_2501_vs2026.py index 381c4b4..29190d9 100644 --- a/tools/legacy/build_plugin_2501_vs2026.py +++ b/tools/legacy/build_plugin_2501_vs2026.py @@ -152,6 +152,7 @@ def _find_msbuild_via_vswhere(vs_version: str) -> 'Optional[Tuple[Path, str, str '-latest', '-prerelease', '-requires', 'Microsoft.Component.MSBuild', + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', '-find', r'MSBuild\**\Bin\MSBuild.exe', ], capture_output=True, text=True, timeout=15, diff --git a/tools/legacy/build_plugin_2600_vs2026.py b/tools/legacy/build_plugin_2600_vs2026.py index 6eea737..158031e 100644 --- a/tools/legacy/build_plugin_2600_vs2026.py +++ b/tools/legacy/build_plugin_2600_vs2026.py @@ -152,6 +152,7 @@ def _find_msbuild_via_vswhere(vs_version: str) -> 'Optional[Tuple[Path, str, str '-latest', '-prerelease', '-requires', 'Microsoft.Component.MSBuild', + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', '-find', r'MSBuild\**\Bin\MSBuild.exe', ], capture_output=True, text=True, timeout=15, diff --git a/tools/legacy/build_plugin_2601_vs2026.py b/tools/legacy/build_plugin_2601_vs2026.py index 8ba9ef5..f1cb437 100755 --- a/tools/legacy/build_plugin_2601_vs2026.py +++ b/tools/legacy/build_plugin_2601_vs2026.py @@ -152,6 +152,7 @@ def _find_msbuild_via_vswhere(vs_version: str) -> 'Optional[Tuple[Path, str, str '-latest', '-prerelease', '-requires', 'Microsoft.Component.MSBuild', + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', '-find', r'MSBuild\**\Bin\MSBuild.exe', ], capture_output=True, text=True, timeout=15, diff --git a/tools/legacy/build_plugin_vs2022.py b/tools/legacy/build_plugin_vs2022.py index ba709e8..34dcb1c 100644 --- a/tools/legacy/build_plugin_vs2022.py +++ b/tools/legacy/build_plugin_vs2022.py @@ -148,6 +148,7 @@ def _find_msbuild_via_vswhere(vs_version: str) -> 'Optional[Tuple[Path, str, str '-latest', '-prerelease', '-requires', 'Microsoft.Component.MSBuild', + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', '-find', r'MSBuild\**\Bin\MSBuild.exe', ], capture_output=True, text=True, timeout=15, diff --git a/tools/legacy/build_plugin_vs2026.py b/tools/legacy/build_plugin_vs2026.py index 553e326..b153c87 100644 --- a/tools/legacy/build_plugin_vs2026.py +++ b/tools/legacy/build_plugin_vs2026.py @@ -152,6 +152,7 @@ def _find_msbuild_via_vswhere(vs_version: str) -> 'Optional[Tuple[Path, str, str '-latest', '-prerelease', '-requires', 'Microsoft.Component.MSBuild', + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', '-find', r'MSBuild\**\Bin\MSBuild.exe', ], capture_output=True, text=True, timeout=15, diff --git a/tools/legacy/build_plugin_zstd_vs2026.py b/tools/legacy/build_plugin_zstd_vs2026.py index 9a905a1..6189c5c 100644 --- a/tools/legacy/build_plugin_zstd_vs2026.py +++ b/tools/legacy/build_plugin_zstd_vs2026.py @@ -152,6 +152,7 @@ def _find_msbuild_via_vswhere(vs_version: str) -> 'Optional[Tuple[Path, str, str '-latest', '-prerelease', '-requires', 'Microsoft.Component.MSBuild', + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', '-find', r'MSBuild\**\Bin\MSBuild.exe', ], capture_output=True, text=True, timeout=15,