Microsoft Build Tools 2022 May 2026

Always add --wait in CI scripts – otherwise the installer may detach and the pipeline will continue prematurely. Common Use Cases & Examples 1. Building a C++ project without VS After installation, MSBuild is at:

C:\BuildTools\MSBuild\Current\Bin\MSBuild.exe Build your solution:

I’ve structured it for a developer audience (CI/CD engineers, C++ devs, .NET devs without full VS). It’s practical, actionable, and highlights common pitfalls. If you maintain build servers, Docker images, or just hate installing the full Visual Studio IDE just to compile code, Microsoft Build Tools 2022 is your best friend. microsoft build tools 2022

# For x64 native & "C:\BuildTools\VC\Auxiliary\Build\vcvars64.bat" cl.exe /EHsc /Fe:hello.exe hello.cpp FROM mcr.microsoft.com/windows/servercore:ltsc2022 AS build ADD https://aka.ms/vs/17/release/vs_buildtools.exe vs_buildtools.exe RUN vs_buildtools.exe --quiet --wait --norestart --installPath C:\BuildTools ` --add Microsoft.VisualStudio.Workload.VCTools ` --add Microsoft.VisualStudio.Component.Windows10SDK.20348 WORKDIR C:\src COPY . . RUN C:\BuildTools\MSBuild\Current\Bin\MSBuild.exe MyApp.sln Pitfalls to Avoid (Saves Hours) | Pitfall | Solution | |---------|----------| | Missing SDK | Build fails with "windows.h not found" . Explicitly add the Windows SDK component. | | Path too long | Install to C:\BuildTools (not Program Files ). Long paths break older projects. | | No vswhere.exe | Unlike full VS, Build Tools alone may lack vswhere . Install Microsoft.VisualStudio.Component.VC.CMake.Project if you need instance detection. | | Running in PowerShell without --wait | Installer returns immediately → build runs against incomplete tools. Always use Start-Process -Wait or the --wait flag. | Verifying Your Installation Run this quick check after install:

You get a vs_BuildTools.exe (~2 MB bootstrapper). vs_BuildTools.exe --quiet --wait --norestart --installPath C:\BuildTools ` --add Microsoft.VisualStudio.Workload.MSBuildTools ` --add Microsoft.VisualStudio.Workload.VCTools ` --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ` --add Microsoft.VisualStudio.Component.Windows10SDK.20348 ` --includeRecommended Workload IDs for common scenarios: Always add --wait in CI scripts – otherwise

| What you need | Workload ID | |---------------|-------------| | Just MSBuild | Microsoft.VisualStudio.Workload.MSBuildTools | | C++ desktop | Microsoft.VisualStudio.Workload.VCTools | | .NET desktop build | Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools | | Windows 10/11 SDK | Microsoft.VisualStudio.Component.Windows11SDK.22621 |

& "C:\BuildTools\MSBuild\Current\Bin\MSBuild.exe" MySolution.sln -p:Configuration=Release -p:Platform=x64 Unlike full VS, the environment isn’t globally set. Use the provided script: It’s practical, actionable, and highlights common pitfalls

"Build Tools = compilers + MSBuild – the kitchen sink." Did this help you? Let me know your favorite Build Tools 2022 tips in the comments.