Skip to content

[Windows-2022] Multiple VC Build Tools will be removed on May, 13 #9701

@mikhailkoliada

Description

@mikhailkoliada

Breaking changes

We will commence the procedure of removing redundant Microsoft.VisualStudio.Component.VC components and leave only the latest available version of some oh them.

Target date

The images rollout process will start on May, 13 and take 3-4 days.

The motivation for the changes

Due to numerous reports regarding errors when using Visual Studio 2022 with multiple pre-installed versions of VC build tools, we are compelled to cease the distribution of alternative versions of the component. Detailed description of the problem can be found here. The list of previously opened issues: #9670, #9404, #9086, #8891, #7867, #7832, #6107, #6091. Therefore, starting from May 6th, we will commence the procedure of removing redundant VC components and leave only the latest available version. We'll possibly reconsider this decision once the problem is resolved.

List of the VC components which are expected to be installed (if you notice that some useful base VC component is missing - indicate that in the comments, we will consider adding it):

Package Version
Microsoft.VisualStudio.Component.VC.14.29.16.11.ARM latest
Microsoft.VisualStudio.Component.VC.14.29.16.11.ARM64 latest
Microsoft.VisualStudio.Component.VC.ASAN latest
Microsoft.VisualStudio.Component.VC.ATL latest
Microsoft.VisualStudio.Component.VC.ATL.ARM latest
Microsoft.VisualStudio.Component.VC.ATL.ARM.Spectre latest
Microsoft.VisualStudio.Component.VC.ATL.ARM64 latest
Microsoft.VisualStudio.Component.VC.ATL.ARM64.Spectre latest
Microsoft.VisualStudio.Component.VC.ATL.Spectre latest
Microsoft.VisualStudio.Component.VC.ATLMFC latest
Microsoft.VisualStudio.Component.VC.ATLMFC.Spectre latest
Microsoft.VisualStudio.Component.VC.CLI.Support latest
Microsoft.VisualStudio.Component.VC.CMake.Project latest
Microsoft.VisualStudio.Component.VC.CoreIde latest
Microsoft.VisualStudio.Component.VC.DiagnosticTools latest
Microsoft.VisualStudio.Component.VC.Llvm.Clang latest
Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset latest
Microsoft.VisualStudio.Component.VC.MFC.ARM latest
Microsoft.VisualStudio.Component.VC.MFC.ARM.Spectre latest
Microsoft.VisualStudio.Component.VC.MFC.ARM64 latest
Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre latest
Microsoft.VisualStudio.Component.VC.Modules.x86.x64 latest
Microsoft.VisualStudio.Component.VC.Redist.14.Latest latest
Microsoft.VisualStudio.Component.VC.Redist.MSM latest
Microsoft.VisualStudio.Component.VC.Runtimes.ARM.Spectre latest
Microsoft.VisualStudio.Component.VC.Runtimes.ARM64.Spectre latest
Microsoft.VisualStudio.Component.VC.Runtimes.ARM64EC.Spectre latest
Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre latest
Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest latest
Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest latest

Possible impact

Builds that require non-latest components missing from the list above will be broken.

Platforms affected

  • Azure DevOps
  • GitHub Actions

Runner images affected

  • Ubuntu 20.04
  • Ubuntu 22.04
  • macOS 11
  • macOS 12
  • macOS 13
  • macOS 13 Arm64
  • macOS 14
  • macOS 14 Arm64
  • Windows Server 2019
  • Windows Server 2022

Mitigation ways

Missing workloads can be installed manually in runtime. We recommend to uninstall unsupported workloads before installing new, it might be done using this snippet.

    steps:
      - name: Delete components
        run: |
                Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
                $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
                $componentsToRemove= @(
                    "Microsoft.VisualStudio.Component.VC.ATL.ARM"
                    "Microsoft.VisualStudio.Component.VC.ATL.ARM.Spectre"
                )
                [string]$workloadArgs = $componentsToRemove | ForEach-Object {" --remove " +  $_}
                $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
                # should be run twice
                $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
                $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
      
      - name: Install components
        run: |
                Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
                $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
                $componentsToRemove= @(
                  "Microsoft.VisualStudio.Component.VC.14.39.17.9.ATL.ARM"
                  "Microsoft.VisualStudio.Component.VC.14.39.17.9.ATL.ARM.Spectre"
                )
                [string]$workloadArgs = $componentsToRemove | ForEach-Object {" --add " +  $_}
                $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
                # should be run twice
                $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
                $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions