From 9e8c09808deb93fa53b746936c4e77367262e982 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 10 Dec 2025 13:40:01 +0000
Subject: [PATCH 1/3] Initial plan
From ec0911b270fc5ff5e44c40b13bcef7020733bc5a Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 10 Dec 2025 14:03:31 +0000
Subject: [PATCH 2/3] Replace deprecated wmic with MSBuild parallelism settings
- Remove wmic-based NumberOfCores detection from build-runtime.cmd and build.cmd
- Replace with UseMultiToolTask, EnforceProcessCountAcrossBuilds, and EnableClServerMode environment variables
- Remove CL_MPCount property from Directory.Build.props which depended on NumberOfCores
- These changes follow Microsoft's recommended approach for C++ build parallelism
Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com>
---
src/coreclr/Directory.Build.props | 1 -
src/coreclr/build-runtime.cmd | 16 +++++-----------
src/tests/build.cmd | 16 +++++-----------
3 files changed, 10 insertions(+), 23 deletions(-)
diff --git a/src/coreclr/Directory.Build.props b/src/coreclr/Directory.Build.props
index 233bfbeacebf0c..2eab0816071b96 100644
--- a/src/coreclr/Directory.Build.props
+++ b/src/coreclr/Directory.Build.props
@@ -24,6 +24,5 @@
false
false
- $(NumberOfCores)
diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd
index b88cd359d6dce9..9819f211477064 100644
--- a/src/coreclr/build-runtime.cmd
+++ b/src/coreclr/build-runtime.cmd
@@ -266,17 +266,11 @@ echo %__MsgPrefix%Using CMake from !CMakePath!
:SkipLocateCMake
-REM NumberOfCores is an WMI property providing number of physical cores on machine
-REM processor(s). It is used to set optimal level of CL parallelism during native build step
-if not defined NumberOfCores (
- REM Determine number of physical processor cores available on machine
- set TotalNumberOfCores=0
- for /f "tokens=*" %%I in (
- 'wmic cpu get NumberOfCores /value ^| find "=" 2^>NUL'
- ) do set %%I & set /a TotalNumberOfCores=TotalNumberOfCores+NumberOfCores
- set NumberOfCores=!TotalNumberOfCores!
-)
-echo %__MsgPrefix%Number of processor cores %NumberOfCores%
+REM Set MSBuild parallelism settings for better build performance
+REM See https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/
+set UseMultiToolTask=true
+set EnforceProcessCountAcrossBuilds=true
+set EnableClServerMode=true
REM =========================================================================================
REM ===
diff --git a/src/tests/build.cmd b/src/tests/build.cmd
index 73691be70ac458..2488005529f8b4 100644
--- a/src/tests/build.cmd
+++ b/src/tests/build.cmd
@@ -268,17 +268,11 @@ echo %__MsgPrefix%Commencing build of native test components for %__BuildArch%/%
REM Set the environment for the native build
-REM NumberOfCores is an WMI property providing number of physical cores on machine
-REM processor(s). It is used to set optimal level of CL parallelism during native build step
-if not defined NumberOfCores (
- REM Determine number of physical processor cores available on machine
- set TotalNumberOfCores=0
- for /f "tokens=*" %%I in (
- 'wmic cpu get NumberOfCores /value ^| find "=" 2^>NUL'
- ) do set %%I & set /a TotalNumberOfCores=TotalNumberOfCores+NumberOfCores
- set NumberOfCores=!TotalNumberOfCores!
-)
-echo %__MsgPrefix%Number of processor cores %NumberOfCores%
+REM Set MSBuild parallelism settings for better build performance
+REM See https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/
+set UseMultiToolTask=true
+set EnforceProcessCountAcrossBuilds=true
+set EnableClServerMode=true
@if defined _echo @echo on
From 3c9eb2a4789a7eac4abf5f1318d9694a7a8b11dd Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 26 Jan 2026 16:54:22 +0000
Subject: [PATCH 3/3] Move MSBuild parallelism settings to root
Directory.Build.props
- Remove environment variable settings from build-runtime.cmd and build.cmd
- Add UseMultiToolTask, EnforceProcessCountAcrossBuilds, and EnableClServerMode as MSBuild properties in root Directory.Build.props
- Keep wmic removal and CL_MPCount removal from previous commit
Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com>
---
Directory.Build.props | 8 ++++++++
src/coreclr/build-runtime.cmd | 6 ------
src/tests/build.cmd | 6 ------
3 files changed, 8 insertions(+), 12 deletions(-)
diff --git a/Directory.Build.props b/Directory.Build.props
index 7c3b8f4429eb67..30419669011184 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -55,6 +55,14 @@
+
+
+ true
+ true
+ true
+
+
11.0
diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd
index 9819f211477064..c373274f39a95d 100644
--- a/src/coreclr/build-runtime.cmd
+++ b/src/coreclr/build-runtime.cmd
@@ -266,12 +266,6 @@ echo %__MsgPrefix%Using CMake from !CMakePath!
:SkipLocateCMake
-REM Set MSBuild parallelism settings for better build performance
-REM See https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/
-set UseMultiToolTask=true
-set EnforceProcessCountAcrossBuilds=true
-set EnableClServerMode=true
-
REM =========================================================================================
REM ===
REM === Start the build steps
diff --git a/src/tests/build.cmd b/src/tests/build.cmd
index 2488005529f8b4..beea809039f83f 100644
--- a/src/tests/build.cmd
+++ b/src/tests/build.cmd
@@ -268,12 +268,6 @@ echo %__MsgPrefix%Commencing build of native test components for %__BuildArch%/%
REM Set the environment for the native build
-REM Set MSBuild parallelism settings for better build performance
-REM See https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/
-set UseMultiToolTask=true
-set EnforceProcessCountAcrossBuilds=true
-set EnableClServerMode=true
-
@if defined _echo @echo on
set __ExtraCmakeArgs=