From 17f87c8fbf2bda9aeb7d806319f169f2644311da Mon Sep 17 00:00:00 2001 From: zkasuran Date: Tue, 16 Jun 2026 04:32:13 +0530 Subject: [PATCH] ci: locate Visual Studio with vswhere in the MSVC CUDA setup The Windows + CUDA jobs fail in the "Setup CUDA (MSVC)" step. setup_cuda.ps1 copies the CUDA MSBuild integration into Visual Studio's BuildCustomizations folder, found by globbing a hard-coded C:\Program Files\Microsoft Visual Studio\2022 path. That path no longer exists on the current windows-latest runner image, so the step exits 1 with "Cannot find path ... 2022" before anything compiles. Resolve the VS install path with vswhere, the supported version-independent way to locate Visual Studio, so the integration is copied wherever VS lives. vswhere ships at a stable path on every GitHub Windows image, so this survives runner image bumps. --- .github/scripts/setup_cuda.ps1 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/scripts/setup_cuda.ps1 b/.github/scripts/setup_cuda.ps1 index 21cc2303c..28ae48e91 100644 --- a/.github/scripts/setup_cuda.ps1 +++ b/.github/scripts/setup_cuda.ps1 @@ -83,7 +83,15 @@ foreach ($dir in $directories) { # Add msbuild cuda extensions $msBuildExtensions = (Get-ChildItem "$src\visual_studio_integration\CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions").fullname -(Get-ChildItem 'C:\Program Files\Microsoft Visual Studio\2022\*\MSBuild\Microsoft\VC\*\BuildCustomizations').FullName | ForEach-Object { + +# Locate Visual Studio with vswhere rather than a hard-coded path, so this keeps +# working when the windows-latest runner image moves the VS install (the old +# 'C:\Program Files\Microsoft Visual Studio\2022\*' path no longer exists there). +$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" +$vsPath = & $vswhere -latest -products '*' -property installationPath +Write-Output "Visual Studio install path: $vsPath" + +(Get-ChildItem "$vsPath\MSBuild\Microsoft\VC\*\BuildCustomizations").FullName | ForEach-Object { $destination = $_ $msBuildExtensions | ForEach-Object { $extension = $_