Description
As of approximately 2026-05-05 12:36 UTC, jobs using runs-on: windows-2025 are being scheduled onto the windows-2025-vs2026 image (Visual Studio 2026 at C:\Program Files\Microsoft Visual Studio\18\Enterprise) instead of the documented windows-2025 image (Visual Studio 2022 at C:\Program Files\Microsoft Visual Studio\2022\Enterprise).
This silently breaks workflows that target the VS 2022 path layout — including a very common pattern: copying NVIDIA CUDA's MSBuildExtensions\* into <VS-root>\MSBuild\Microsoft\VC\<vXXX>\BuildCustomizations\ so MSBuild can build CUDA projects.
The windows-2025-vs2026 label is itself documented as a separate, beta image (see #13638 / #13986). Routing the non-beta windows-2025 label to that beta image is what's causing the regression.
Platforms affected
Runner images affected
Image version and build link
Failing job (uses runs-on: windows-2025, gets served vs2026 image):
Is it regression?
Yes. The same runs-on: windows-2025 request was correctly served the windows-2025 image earlier the same day:
Expected behavior
runs-on: windows-2025 should be served the windows-2025 image (currently win25/20260428.110, with Visual Studio Enterprise 2022 17.14.x at C:\Program Files\Microsoft Visual Studio\2022\Enterprise), per the Windows-2025 readme. The VS 2026 image should only be served when explicitly requested via runs-on: windows-2025-vs2026.
Actual behavior
runs-on: windows-2025 is being served the windows-2025-vs2026 image. That image installs Visual Studio at C:\Program Files\Microsoft Visual Studio\18\Enterprise\ instead of C:\Program Files\Microsoft Visual Studio\2022\Enterprise\. Any path string referring to the 2022 location now points at a directory that doesn't exist, e.g.:
gi 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\*\BuildCustomizations'
Cannot find path 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC'
because it does not exist.
(See the failing job log around the Install Visual Studio Integration step.)
Repro steps
- Create a workflow with:
jobs:
probe:
runs-on: windows-2025
steps:
- shell: pwsh
run: |
"Image label requested: windows-2025"
Test-Path 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise'
Test-Path 'C:\Program Files\Microsoft Visual Studio\18\Enterprise'
- Run it.
- Observe:
Image: windows-2025-vs2026 in the job's "Runner Image" group, and the \2022\Enterprise path test returns False while the \18\Enterprise path returns True.
Workaround
Pin the matrix to a specific image build number rather than the floating windows-2025 label, or update the workflow's hardcoded VS paths to be VS-version-agnostic (resolve via vswhere -property installationPath). Neither is a substitute for the floating label routing to the documented image.
Description
As of approximately 2026-05-05 12:36 UTC, jobs using
runs-on: windows-2025are being scheduled onto thewindows-2025-vs2026image (Visual Studio 2026 atC:\Program Files\Microsoft Visual Studio\18\Enterprise) instead of the documentedwindows-2025image (Visual Studio 2022 atC:\Program Files\Microsoft Visual Studio\2022\Enterprise).This silently breaks workflows that target the VS 2022 path layout — including a very common pattern: copying NVIDIA CUDA's
MSBuildExtensions\*into<VS-root>\MSBuild\Microsoft\VC\<vXXX>\BuildCustomizations\so MSBuild can build CUDA projects.The
windows-2025-vs2026label is itself documented as a separate, beta image (see #13638 / #13986). Routing the non-betawindows-2025label to that beta image is what's causing the regression.Platforms affected
Runner images affected
Image version and build link
Failing job (uses
runs-on: windows-2025, gets served vs2026 image):"runner": ["windows-2025"].Is it regression?
Yes. The same
runs-on: windows-2025request was correctly served thewindows-2025image earlier the same day:Expected behavior
runs-on: windows-2025should be served thewindows-2025image (currentlywin25/20260428.110, with Visual Studio Enterprise 2022 17.14.x atC:\Program Files\Microsoft Visual Studio\2022\Enterprise), per the Windows-2025 readme. The VS 2026 image should only be served when explicitly requested viaruns-on: windows-2025-vs2026.Actual behavior
runs-on: windows-2025is being served thewindows-2025-vs2026image. That image installs Visual Studio atC:\Program Files\Microsoft Visual Studio\18\Enterprise\instead ofC:\Program Files\Microsoft Visual Studio\2022\Enterprise\. Any path string referring to the 2022 location now points at a directory that doesn't exist, e.g.:(See the failing job log around the
Install Visual Studio Integrationstep.)Repro steps
Image: windows-2025-vs2026in the job's "Runner Image" group, and the\2022\Enterprisepath test returnsFalsewhile the\18\Enterprisepath returnsTrue.Workaround
Pin the matrix to a specific image build number rather than the floating
windows-2025label, or update the workflow's hardcoded VS paths to be VS-version-agnostic (resolve viavswhere -property installationPath). Neither is a substitute for the floating label routing to the documented image.