From 61dd6fe035555fecff8f2bd5596b551f073f71a6 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Fri, 17 Jul 2026 16:43:16 +0800 Subject: [PATCH 01/11] remove submodules instructions; update doc and script to accept vs2026 --- .github/copilot-instructions.md | 4 ---- doc/building.md | 6 +----- tools/razzle.cmd | 28 ++++++++++++++++++++-------- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index c8c6a7a3dc..c79d3f0290 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -6,10 +6,6 @@ This is the source repository for **Windows Terminal**, **Windows Console Host** Requires Visual Studio 2022 (17.10+) with "Desktop Development with C++" and "Universal Windows Platform Development" workloads, plus the Windows 11 SDK (10.0.22621.0). The solution uses the `.slnx` format (`OpenConsole.slnx`), which requires MSBuild 17.10 or later. If you get `"Invalid input 'OpenConsole.slnx'. The file type was not recognized."`, update Visual Studio. -```powershell -# First time: initialize submodules -git submodule update --init --recursive -``` Build uses MSBuild via the CMD razzle environment. Run `razzle.cmd` once per terminal session to set up the environment, then use the build commands. Since razzle sets env vars in CMD, chain commands with `&&` when calling from PowerShell (e.g., `cmd /c ".\tools\razzle.cmd && bz"`): diff --git a/doc/building.md b/doc/building.md index af1c7e7510..6b3e017f05 100644 --- a/doc/building.md +++ b/doc/building.md @@ -1,11 +1,7 @@ # How to build OpenConsole -This repository uses [git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) for some of its dependencies. To make sure submodules are restored or updated, be sure to run the following prior to building: - -```shell -git submodule update --init --recursive -``` +This repository's dependencies come from NuGet, vcpkg, and the vendored `oss/` tree, and are restored automatically by the build. OpenConsole.slnx may be built from within Visual Studio or from the command-line using a set of convenience scripts & tools in the **/tools** directory: diff --git a/tools/razzle.cmd b/tools/razzle.cmd index 51d0ec8f1f..25a551ec7b 100644 --- a/tools/razzle.cmd +++ b/tools/razzle.cmd @@ -44,28 +44,39 @@ for /f "usebackq delims=" %%I in (`dir /b /aD /o-N /s "%~dp0..\packages\vswhere* if not defined VSWHERE ( echo Could not find vswhere on your machine. Please set the VSWHERE variable to the location of vswhere.exe and run razzle again. - goto :EXIT + exit /b 1 ) rem Add path to MSBuild Binaries rem -rem We're going to always prefer prerelease version of VS 2022. The -version -rem range [17.0,18.0) ensures we pick VS 2022 (including previews) but not a -rem newer major version whose toolset may be incompatible with our v143 -rem PlatformToolset. If you need VS 18+, update PlatformToolset in -rem src\common.build.pre.props as well. +rem We accept the latest prerelease of VS in the 17.x or 18.x range. The -version +rem range [17.0,19.0) picks up both VS 2022 (17.x) and VS 18 (including previews) +rem but not a still-newer major whose toolset may be incompatible. VS 18 builds +rem fine with our current v143 PlatformToolset; if a future major needs a newer +rem toolset, update PlatformToolset in src\common.build.pre.props as well. rem -for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -version "[17.0,18.0)" -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( +for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -version "[17.0,19.0)" -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( set MSBUILD=%%B ) if not defined MSBUILD ( echo Could not find MsBuild on your machine. Please set the MSBUILD variable to the location of MSBuild.exe and run razzle again. - goto :EXIT + exit /b 1 ) :FOUND_MSBUILD +rem Guard: make sure we actually resolved a real MSBuild.exe. Without this, a +rem chained command like `razzle && bcz` would run bcz with an empty MSBUILD/ +rem PLATFORM/CONFIGURATION and fail cryptically with '""' is not recognized. +if not exist "%MSBUILD%" ( + echo Could not find a usable MSBuild.exe ^(resolved: "%MSBUILD%"^). + echo Open a "Developer PowerShell/Command Prompt for VS", or run + echo Import-Module .\tools\OpenConsole.psm1; Set-MsbuildDevEnvironment + echo in your shell before razzle, then try again. + exit /b 1 +) + set PATH=%PATH%%MSBUILD%\..; if "%PROCESSOR_ARCHITECTURE%" == "AMD64" ( @@ -123,5 +134,6 @@ set OpenConBuild=true :END echo The dev environment is ready to go! +exit /b 0 :EXIT From b56009bc70a2835da837ddc0ba6f2baddffd9343 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:43:47 +0800 Subject: [PATCH 02/11] quick start reader friendly --- README.md | 3 ++ doc/quick-start-local-dev.md | 62 ++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 doc/quick-start-local-dev.md diff --git a/README.md b/README.md index 348424385f..ad97676952 100644 --- a/README.md +++ b/README.md @@ -257,6 +257,9 @@ We are excited to work alongside you, our amazing community, to build and enhanc **Before you start work on a feature/fix**, please read & follow the [Windows Terminal Contributor's Guide](https://github.com/microsoft/terminal/blob/main/CONTRIBUTING.md). The contribution process is the same. +For local dev/build of this repo, see: +[quick-start-local-dev](doc/quick-start-local-dev.md) + --- ## Code of Conduct diff --git a/doc/quick-start-local-dev.md b/doc/quick-start-local-dev.md new file mode 100644 index 0000000000..db6c48b6b2 --- /dev/null +++ b/doc/quick-start-local-dev.md @@ -0,0 +1,62 @@ +# Quick Start + +The fast path for local development. Intelligent Terminal is a dual-stack project: the Rust +**WTA** agent (`tools/wta/`) plus the C++ **Windows Terminal** app (`src/`). For command-line +builds, CI, packaging, and troubleshooting, see [building.md](./building.md). + +## 1. First-time setup + +**1.1. Install:** + +- **Visual Studio 2026 (18.x)** with the **Desktop development with C++** and **Universal Windows + Platform development** workloads. +- **Rust** via [rustup](https://rustup.rs/) (standard rustup; the repo's toolchain pin falls back + to stable). + +Then open `OpenConsole.slnx` in Visual Studio and click **Install** on the "extra components" +prompt. It reads `.vsconfig` and adds what the build needs, including **C++ Universal Windows +Platform tools (Latest MSVC)** (required for `WindowsTerminal` to load; a separate item from the +UWP workload). NuGet and vcpkg dependencies restore automatically during the build, so that is all +the setup needed. + +**1.2. Build and run** (two build systems, in order): + +1. Build the Rust agent: + `cargo build --target --manifest-path ` + + For instance, + ```powershell + cargo build --target x86_64-pc-windows-msvc --manifest-path tools/wta/Cargo.toml + ``` +2. In Visual Studio: + - Set startup project: **`CascadiaPackage`** + - Select platform, **x64** for instance. + - Goto `CascadiaPackage` > Properties > Debug: set **Application process** and **Background task + process** to **Native Only** + - Run (**F5**) + +F5 builds the app, deploys, and launches Windows Terminal (Dev) with the debugger attached. The +first build is slow; later ones are incremental. + +## 2. After changing code + +| Changed | Do this | +|---------|---------| +| **Rust** (`tools/wta/`) | Rebuild via `cargo build`. For instance,
`cargo build --target x86_64-pc-windows-msvc --manifest-path tools/wta/Cargo.toml` | +| **C++** (`src/`) | Press **F5** in Visual Studio | + +`cargo build` is incremental (seconds for a small change). To see a WTA change inside the running +Terminal (agent pane, autofix), press **F5** afterward so the new `wta.exe` is copied in. + +> If a rebuild reports `wta.exe` in use, stop the running instance first: close the Dev Terminal, +> or run `taskkill /f /im wta.exe`. + +## 3. Running tests + +| Side | Command | +|------|---------| +| **Rust** | `cargo test --manifest-path tools/wta/Cargo.toml` | +| **C++** (TAEF) | `runut.cmd` (unit), `runft.cmd` (feature), `runuia.cmd` (UIA), from a dev environment | + +Run one C++ test with `te.exe /name:`. See [building.md](./building.md) for +the dev environment and [TAEF.md](./TAEF.md) for details. From f872bd4503d9e3d8d6f10ecb300f2f8d3563680f Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:49:05 +0800 Subject: [PATCH 03/11] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- tools/razzle.cmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/razzle.cmd b/tools/razzle.cmd index 25a551ec7b..db703f1025 100644 --- a/tools/razzle.cmd +++ b/tools/razzle.cmd @@ -51,9 +51,9 @@ rem Add path to MSBuild Binaries rem rem We accept the latest prerelease of VS in the 17.x or 18.x range. The -version rem range [17.0,19.0) picks up both VS 2022 (17.x) and VS 18 (including previews) -rem but not a still-newer major whose toolset may be incompatible. VS 18 builds -rem fine with our current v143 PlatformToolset; if a future major needs a newer -rem toolset, update PlatformToolset in src\common.build.pre.props as well. +rem but not a still-newer major whose toolset may be incompatible. VS 18 uses our +rem v145 PlatformToolset (see src\common.build.pre.props); older VS versions default +rem to v143. rem for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -version "[17.0,19.0)" -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( set MSBUILD=%%B From 6bad68bbcb8b713a4569a50542e5a83f64b0ac80 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:51:35 +0800 Subject: [PATCH 04/11] require VS2026 --- .github/copilot-instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index c79d3f0290..424aa543bb 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -4,7 +4,7 @@ This is the source repository for **Windows Terminal**, **Windows Console Host** ## Build -Requires Visual Studio 2022 (17.10+) with "Desktop Development with C++" and "Universal Windows Platform Development" workloads, plus the Windows 11 SDK (10.0.22621.0). The solution uses the `.slnx` format (`OpenConsole.slnx`), which requires MSBuild 17.10 or later. If you get `"Invalid input 'OpenConsole.slnx'. The file type was not recognized."`, update Visual Studio. +Requires Visual Studio 2026 with "Desktop Development with C++" and "Universal Windows Platform Development" workloads, plus the Windows 11 SDK (10.0.22621.0). The solution uses the `.slnx` format (`OpenConsole.slnx`), which requires MSBuild 17.10 or later. If you get `"Invalid input 'OpenConsole.slnx'. The file type was not recognized."`, update Visual Studio. Build uses MSBuild via the CMD razzle environment. Run `razzle.cmd` once per terminal session to set up the environment, then use the build commands. Since razzle sets env vars in CMD, chain commands with `&&` when calling from PowerShell (e.g., `cmd /c ".\tools\razzle.cmd && bz"`): From d3ffd88ebc2f76eae2997f84803624c3718bf705 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 20 Jul 2026 15:02:57 +0800 Subject: [PATCH 05/11] fix errors --- .github/copilot-instructions.md | 1 - doc/quick-start-local-dev.md | 4 ++-- tools/razzle.cmd | 10 ++++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 424aa543bb..50a960f53c 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -6,7 +6,6 @@ This is the source repository for **Windows Terminal**, **Windows Console Host** Requires Visual Studio 2026 with "Desktop Development with C++" and "Universal Windows Platform Development" workloads, plus the Windows 11 SDK (10.0.22621.0). The solution uses the `.slnx` format (`OpenConsole.slnx`), which requires MSBuild 17.10 or later. If you get `"Invalid input 'OpenConsole.slnx'. The file type was not recognized."`, update Visual Studio. - Build uses MSBuild via the CMD razzle environment. Run `razzle.cmd` once per terminal session to set up the environment, then use the build commands. Since razzle sets env vars in CMD, chain commands with `&&` when calling from PowerShell (e.g., `cmd /c ".\tools\razzle.cmd && bz"`): ```cmd diff --git a/doc/quick-start-local-dev.md b/doc/quick-start-local-dev.md index db6c48b6b2..b83f51f346 100644 --- a/doc/quick-start-local-dev.md +++ b/doc/quick-start-local-dev.md @@ -1,4 +1,4 @@ -# Quick Start +# Quick Start the local development The fast path for local development. Intelligent Terminal is a dual-stack project: the Rust **WTA** agent (`tools/wta/`) plus the C++ **Windows Terminal** app (`src/`). For command-line @@ -31,7 +31,7 @@ the setup needed. 2. In Visual Studio: - Set startup project: **`CascadiaPackage`** - Select platform, **x64** for instance. - - Goto `CascadiaPackage` > Properties > Debug: set **Application process** and **Background task + - Go to `CascadiaPackage` > Properties > Debug: set **Application process** and **Background task process** to **Native Only** - Run (**F5**) diff --git a/tools/razzle.cmd b/tools/razzle.cmd index db703f1025..304824f27e 100644 --- a/tools/razzle.cmd +++ b/tools/razzle.cmd @@ -51,9 +51,9 @@ rem Add path to MSBuild Binaries rem rem We accept the latest prerelease of VS in the 17.x or 18.x range. The -version rem range [17.0,19.0) picks up both VS 2022 (17.x) and VS 18 (including previews) -rem but not a still-newer major whose toolset may be incompatible. VS 18 uses our -rem v145 PlatformToolset (see src\common.build.pre.props); older VS versions default -rem to v143. +rem but not a still-newer major whose toolset may be incompatible. VS 18 uses our +rem v145 PlatformToolset (see src\common.build.pre.props); older VS versions default +rem to v143. rem for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -version "[17.0,19.0)" -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( set MSBUILD=%%B @@ -77,7 +77,9 @@ if not exist "%MSBUILD%" ( exit /b 1 ) -set PATH=%PATH%%MSBUILD%\..; +rem Add MSBuild's own directory to PATH, with a proper ; separator. +for %%F in ("%MSBUILD%") do set "MSBUILD_BIN=%%~dpF" +set "PATH=%PATH%;%MSBUILD_BIN%" if "%PROCESSOR_ARCHITECTURE%" == "AMD64" ( set ARCH=x64 From 1d1c21a43d454a8e955cdefa7896b7fbf0fa370c Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 20 Jul 2026 15:06:25 +0800 Subject: [PATCH 06/11] revert msbuild version limit when searching for msbuild --- tools/razzle.cmd | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tools/razzle.cmd b/tools/razzle.cmd index 304824f27e..f2e7e3a581 100644 --- a/tools/razzle.cmd +++ b/tools/razzle.cmd @@ -49,13 +49,7 @@ if not defined VSWHERE ( rem Add path to MSBuild Binaries rem -rem We accept the latest prerelease of VS in the 17.x or 18.x range. The -version -rem range [17.0,19.0) picks up both VS 2022 (17.x) and VS 18 (including previews) -rem but not a still-newer major whose toolset may be incompatible. VS 18 uses our -rem v145 PlatformToolset (see src\common.build.pre.props); older VS versions default -rem to v143. -rem -for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -version "[17.0,19.0)" -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( +for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( set MSBUILD=%%B ) From 520b3b29981586f44bfb2f9bc8b635c3bf5fc9f2 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 20 Jul 2026 15:10:14 +0800 Subject: [PATCH 07/11] preferably 2026 --- .github/copilot-instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 50a960f53c..08958f64fa 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -4,7 +4,7 @@ This is the source repository for **Windows Terminal**, **Windows Console Host** ## Build -Requires Visual Studio 2026 with "Desktop Development with C++" and "Universal Windows Platform Development" workloads, plus the Windows 11 SDK (10.0.22621.0). The solution uses the `.slnx` format (`OpenConsole.slnx`), which requires MSBuild 17.10 or later. If you get `"Invalid input 'OpenConsole.slnx'. The file type was not recognized."`, update Visual Studio. +Requires Visual Studio (preferably Visual Studio 2026) with "Desktop Development with C++" and "Universal Windows Platform Development" workloads, plus the Windows 11 SDK (10.0.22621.0). The solution uses the `.slnx` format (`OpenConsole.slnx`), which requires MSBuild 17.10 or later. If you get `"Invalid input 'OpenConsole.slnx'. The file type was not recognized."`, update Visual Studio. Build uses MSBuild via the CMD razzle environment. Run `razzle.cmd` once per terminal session to set up the environment, then use the build commands. Since razzle sets env vars in CMD, chain commands with `&&` when calling from PowerShell (e.g., `cmd /c ".\tools\razzle.cmd && bz"`): From 0e358040d6aaa733ca4f06bdc630d5b9d6f7da7d Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 20 Jul 2026 15:41:18 +0800 Subject: [PATCH 08/11] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- doc/quick-start-local-dev.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/quick-start-local-dev.md b/doc/quick-start-local-dev.md index b83f51f346..df97ba9b55 100644 --- a/doc/quick-start-local-dev.md +++ b/doc/quick-start-local-dev.md @@ -1,4 +1,4 @@ -# Quick Start the local development +# Quick start for local development The fast path for local development. Intelligent Terminal is a dual-stack project: the Rust **WTA** agent (`tools/wta/`) plus the C++ **Windows Terminal** app (`src/`). For command-line From 287e87ae6432b2b3fc67d735209ccac7a27b3e0a Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 20 Jul 2026 15:42:41 +0800 Subject: [PATCH 09/11] Revert "revert msbuild version limit when searching for msbuild" This reverts commit 1d1c21a43d454a8e955cdefa7896b7fbf0fa370c. --- tools/razzle.cmd | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/razzle.cmd b/tools/razzle.cmd index f2e7e3a581..304824f27e 100644 --- a/tools/razzle.cmd +++ b/tools/razzle.cmd @@ -49,7 +49,13 @@ if not defined VSWHERE ( rem Add path to MSBuild Binaries rem -for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( +rem We accept the latest prerelease of VS in the 17.x or 18.x range. The -version +rem range [17.0,19.0) picks up both VS 2022 (17.x) and VS 18 (including previews) +rem but not a still-newer major whose toolset may be incompatible. VS 18 uses our +rem v145 PlatformToolset (see src\common.build.pre.props); older VS versions default +rem to v143. +rem +for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -version "[17.0,19.0)" -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( set MSBUILD=%%B ) From 1d3ac9d28e2f7e5e696f89c0f45fcd3ed56ade32 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 20 Jul 2026 16:09:32 +0800 Subject: [PATCH 10/11] resolve comments --- doc/quick-start-local-dev.md | 3 ++- tools/razzle.cmd | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/quick-start-local-dev.md b/doc/quick-start-local-dev.md index df97ba9b55..b510f560bd 100644 --- a/doc/quick-start-local-dev.md +++ b/doc/quick-start-local-dev.md @@ -1,4 +1,5 @@ -# Quick start for local development +# Quick start for local development + The fast path for local development. Intelligent Terminal is a dual-stack project: the Rust **WTA** agent (`tools/wta/`) plus the C++ **Windows Terminal** app (`src/`). For command-line diff --git a/tools/razzle.cmd b/tools/razzle.cmd index 304824f27e..fdcf757536 100644 --- a/tools/razzle.cmd +++ b/tools/razzle.cmd @@ -137,5 +137,3 @@ set OpenConBuild=true :END echo The dev environment is ready to go! exit /b 0 - -:EXIT From 5196fd9b0b3c6d17123c703b155bd1087623c629 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 20 Jul 2026 16:30:23 +0800 Subject: [PATCH 11/11] resolve comments --- tools/razzle.cmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/razzle.cmd b/tools/razzle.cmd index fdcf757536..f84c32620e 100644 --- a/tools/razzle.cmd +++ b/tools/razzle.cmd @@ -30,7 +30,7 @@ set MSBUILD= rem GH#1313: If msbuild is already on the path, we don't need to look for it. for %%X in (msbuild.exe) do (set MSBUILD=%%~$PATH:X) if defined MSBUILD ( - echo Using MsBuild at %MSBUILD% which was already on the path. + echo Using MSBuild at %MSBUILD% which was already on the path. goto :FOUND_MSBUILD ) @@ -55,12 +55,12 @@ rem but not a still-newer major whose toolset may be incompatible. VS 18 uses ou rem v145 PlatformToolset (see src\common.build.pre.props); older VS versions default rem to v143. rem -for /f "usebackq tokens=*" %%B in (`%VSWHERE% -latest -prerelease -products * -requires Microsoft.Component.MSBuild -version "[17.0,19.0)" -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( +for /f "usebackq tokens=*" %%B in (`"%VSWHERE%" -latest -prerelease -products * -requires Microsoft.Component.MSBuild -version "[17.0,19.0)" -find MSBuild\**\Bin\MSBuild.exe 2^>nul`) do ( set MSBUILD=%%B ) if not defined MSBUILD ( - echo Could not find MsBuild on your machine. Please set the MSBUILD variable to the location of MSBuild.exe and run razzle again. + echo Could not find MSBuild on your machine. Please set the MSBUILD variable to the location of MSBuild.exe and run razzle again. exit /b 1 )