Detect and correct worker node over-provisioning#13220
Conversation
|
Hello @@copilot, I noticed that you’re changing an .swr file or any file under src/Package/MSBuild.VSSetup.. Please make sure to validate this change by an experimental VS insertion. This is accomplished by pushing to an exp/* branch, which requires write permissions to this repo. |
Rebased on PR #13256 and integrated the improved node detection logic. Key improvements in commit f6e3056:
The over-provisioning detection now uses the more robust node discovery mechanism, providing better consistency across platforms and more accurate identification of worker nodes vs. main MSBuild processes. |
Rebased on the updated PR #13256 (commit 420cfb9). The branch now includes all improvements from the latest version of PR #13256:
My implementation remains fully compatible since it calls All 8 unit tests pass ✅ Note: The branch history has diverged from the remote due to the rebase. A force push will be needed to update the remote branch. |
f6e3056 to
919b1d4
Compare
|
@copilot rebase this yet one more time now that the parent PR has merged to main. |
|
@baronfel Unfortunately I hit an unexpected error while processing your comment. I've automatically reported this to GitHub. You can ask me to try again later by mentioning me in a new comment. If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: Sorry for the inconvenience! |
|
@copilot rebase this yet one more time now that the parent PR has merged to main. |
|
@baronfel Unfortunately I hit an unexpected error while processing your comment. I've automatically reported this to GitHub. You can ask me to try again later by mentioning me in a new comment. If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: Sorry for the inconvenience! |
There was a problem hiding this comment.
Pull request overview
This PR implements detection and correction of worker node over-provisioning when multiple MSBuild instances run concurrently. It builds upon the improved node discovery from PR #13256, using NodeMode filtering to accurately count and manage worker nodes across the system.
Changes:
- Implements selective node termination based on system-wide node count vs. NUM_PROCS/2 threshold
- Adds cross-platform process command line retrieval with optimized ArrayPool usage
- Integrates NodeMode extraction helpers for accurate node type identification
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
src/Shared/ProcessExtensions.cs |
Cross-platform command line retrieval via WMI (Windows), /proc (Linux), and sysctl (macOS/BSD) with ArrayPool optimization |
src/Framework/NodeMode.cs |
Added ExtractFromCommandLine helper and span-based TryParse overload for efficient NodeMode parsing |
src/Build/BackEnd/Components/Communications/NodeProviderOutOfProcBase.cs |
Core over-provisioning detection logic with DetermineNodesForReuse, CountSystemWideActiveNodes, and NodeMode-filtered process discovery |
src/Build/BackEnd/Node/OutOfProcServerNode.cs |
Server node self-termination when count > 1 to prevent over-provisioning |
src/Framework/ChangeWaves.cs |
Added Wave18_6 feature flag for gating the new functionality |
src/Shared/Debugging/DebugUtils.cs |
Refactored to use NodeModeHelper.ExtractFromCommandLine |
src/Utilities.UnitTests/ProcessExtensions_Tests.cs |
Tests for TryGetCommandLine with timing diagnostics |
src/Build.UnitTests/BackEnd/NodeProviderOutOfProc_Tests.cs |
Comprehensive unit tests (8 scenarios) for over-provisioning detection logic |
src/Framework/NativeMethods.cs |
Added SupportedOSPlatformGuard attribute for IsOSX property |
| Project files | Removed redundant ProcessExtensions.cs references; added AllowUnsafeBlocks to MSBuild.UnitTests |
919b1d4 to
7a70db1
Compare
…0076) Updated [Microsoft.Build.Framework](https://github.com/dotnet/msbuild) from 18.4.0 to 18.8.2. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Build.Framework's releases](https://github.com/dotnet/msbuild/releases)._ ## 18.8.2 ## What's Changed * [vs16.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12550 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12739 * [vs17.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12740 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12743 * Add clear error message (MSB4233) for .NET runtime tasks on MSBuild 17.14 by @baronfel with @Copilot in https://github.com/dotnet/msbuild/pull/12662 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12759 * [vs17.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12760 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12762 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12744 * Remove audit sources from NuGet.config by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12796 * Bump System.Configuration.ConfigurationManager to 6.0.0 # by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12795 * Enable localization for vs17.14 build by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12799 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12814 * [vs17.14] Add test summary always in terminal logger by @nohwnd in https://github.com/dotnet/msbuild/pull/12852 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12575 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12889 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12892 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12891 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 12921813 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/12897 * Disable Localization for vs17.14 by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12903 * [automated] Merge branch 'vs16.11' => 'vs17.8' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/12798 * [vs17.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12815 * [automated] Merge branch 'vs17.14' => 'vs18.0' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/12917 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12934 * [vs17.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12935 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12941 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12940 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12939 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12966 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12965 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12964 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13038 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13049 * [vs18.0] Fix MSB1025 error when using DistributedFileLogger (-dfl flag) by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13039 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13037 * [automated] Merge branch 'vs18.0' => 'vs18.3' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13052 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13101 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13098 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13100 * [vs18.3] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13102 * Backflow 10.0.2xx VMR by @dkurepa in https://github.com/dotnet/msbuild/pull/13121 * Disable localization for vs18.0 in build configuration by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13164 * Disable localization for vs18.3 by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13165 * [vs18.3] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13161 * [vs18.3] Stabilize package versions by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13233 * [vs18.3] Add Managed Identity for bootstrapper creation by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13249 * [automated] Merge branch 'vs18.0' => 'vs18.3' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13167 * [vs18.3] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13228 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13159 ... (truncated) ## 18.7.1 ## What's Changed * Fix TraceEngine file contention deadlock in multithreaded mode by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13446 * Remove duplicate test cases in MultithreadableTaskAnalyzer by @Youssef1313 in https://github.com/dotnet/msbuild/pull/13483 * Ensure ThreadSafeTaskAnalyzer.Tests is considered as a unit test project by @Youssef1313 in https://github.com/dotnet/msbuild/pull/13481 * Fix MSBuildTask0002 analyzer warnings in already-migrated tasks by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13466 * Fix race conditions in task host path resolution by @AR-May in https://github.com/dotnet/msbuild/pull/13485 * Migrate ToolTask and Al task to TaskEnvironment API by @OvesN in https://github.com/dotnet/msbuild/pull/13423 * Bump main to 18.7, add vs18.6 to merge flow by @MichalPavlik in https://github.com/dotnet/msbuild/pull/13472 * Avoid allocations in GetHashCode implementations by @DustinCampbell in https://github.com/dotnet/msbuild/pull/13475 * Add PATs rotation to agentic workflow(s) by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13496 * Fix ASP.NET WebSite projects to copy netstandard.dll facade when required by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13058 * Migrate AspNetCompiler to TaskEnvironment API by @OvesN in https://github.com/dotnet/msbuild/pull/13424 * Add review workflow by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13503 * Strengthen reviewer skill: add step-back analysis dimensions by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13504 * Add 'Request Speedometer Perf Run' to VS experimental insertion build policies by @Copilot in https://github.com/dotnet/msbuild/pull/13505 * Remove duplicate @ prefix from issueAuthor in GitOps by @akoeplinger in https://github.com/dotnet/msbuild/pull/13492 * Improve review aw by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13510 * Migrates unit tests to use RoslynCodeTaskFactory to enable running tests under .NET Core by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13500 * Fix cross-AppDomain TaskItem modifier cache regression by @DustinCampbell in https://github.com/dotnet/msbuild/pull/13493 * Discourage review agent from approving PRs by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13512 * Stop trying to deploy ValueTuple by @rainersigwald in https://github.com/dotnet/msbuild/pull/13507 * Ad-hoc re-sign bootstrap dotnet on macOS to prevent SIGKILL by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13513 * RoslynCodeTaskFactory: Log MSB3753 when task class does not implement ITask by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13517 * Update gh-aw (upon mcp policy changes) by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13526 * Eliminate XmlChildNodes allocations in GetXmlNodeInnerContents by @nareshjo in https://github.com/dotnet/msbuild/pull/13509 * Fix telemetry allocation regression: per-engine collector ownership by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13516 * Migrate to xunit.v3 by @Youssef1313 in https://github.com/dotnet/msbuild/pull/13482 * Fix stray brace in HandleBuildCancel trace string causing MSB1025 by @Copilot in https://github.com/dotnet/msbuild/pull/13535 * Bumping to 10.0.4 runtime packages by @MichalPavlik in https://github.com/dotnet/msbuild/pull/13533 * Remove early return in GetCanonicalForm, always call System.IO.Path by @OvesN in https://github.com/dotnet/msbuild/pull/13532 * Do not overwrite GetCopyToOutputDirectoryItemsDependsOn, just add new… by @snechaev in https://github.com/dotnet/msbuild/pull/13474 * Migrate GetReferenceAssemblyPaths task to TaskEnvironment API by @OvesN in https://github.com/dotnet/msbuild/pull/13495 * Stabilize ToolTaskThatTimeoutAndRetry test by @rainersigwald in https://github.com/dotnet/msbuild/pull/13489 * [automated] Merge branch 'vs18.6' => 'main' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13506 * Add extra test assertions around tests by @Youssef1313 in https://github.com/dotnet/msbuild/pull/13536 * Add static eval for repo skills/agents via skill-validator by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13537 * Migrate SGen task to Task environment API by @OvesN in https://github.com/dotnet/msbuild/pull/13457 * Fix TerminalLogger assert failure for metaproj files and cached project eval ID by @OvesN in https://github.com/dotnet/msbuild/pull/13480 * Filter out approving review from pr-reviewer agent by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13553 * Use a unique task name per invocation to tabilize RoslynCodeTaskFactory_ReuseCompilation test by @huulinhnguyen-dev in https://github.com/dotnet/msbuild/pull/13551 * Brief doc on feedback/logging/data systems by @rainersigwald in https://github.com/dotnet/msbuild/pull/13554 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13881982 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13437 * Stage 3: Forward BuildProjectFile* callbacks from OOP TaskHost to worker node by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13350 * Enable TaskHost Callbacks by default by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13579 * Remove unactionable info from reviewer agent by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13578 * Enlighten RequiresFramework35SP1Assembly task for multithreaded mode by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13575 * Make SdkResolver-provided environment variables take precedence over ambient environment by @Copilot in https://github.com/dotnet/msbuild/pull/12655 * Add dotnet/skills marketplace and enable plugins by @Evangelink in https://github.com/dotnet/msbuild/pull/13582 * The skills/agents check filters-in only touched files by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13586 * Fix skill-validation workflow failing when agents directory is deleted by @JeremyKuhne in https://github.com/dotnet/msbuild/pull/13592 ... (truncated) ## 18.6.3 ## What's Changed * Improve cross-platform node discovery for reuse with NodeMode filtering by @Copilot in https://github.com/dotnet/msbuild/pull/13256 * Updated common types XSD to remove errors from redefining `Include` attributes by @glektarssza in https://github.com/dotnet/msbuild/pull/13284 * Update VersionPrefix to 18.6.0 + insertion flow by @MichalPavlik in https://github.com/dotnet/msbuild/pull/13296 * Log warnings for skipped STR resource keys instead of failing the build by @OvesN in https://github.com/dotnet/msbuild/pull/13291 * Isolate MSBuildTaskHost from the rest of MSBuild Codebase by @DustinCampbell in https://github.com/dotnet/msbuild/pull/13232 * Improve error messages when ToolTask overrides exit code 0 to -1 due to logged errors by @OvesN in https://github.com/dotnet/msbuild/pull/13303 * Migrate Exec task to TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13171 * Enhance crash telemetry with richer diagnostics and EndBuild hang detection by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13304 * [main] Update dependencies from nuget/nuget.client by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13309 * [IBuildEngine callbacks] Stage 2: RequestCores/ReleaseCores by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13306 * Only get command line args names on modern .NET by @baronfel in https://github.com/dotnet/msbuild/pull/13314 * Detect and correct worker node over-provisioning by @Copilot in https://github.com/dotnet/msbuild/pull/13220 * Add App Host Support for MSBuild by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13175 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13311 * Fix ObjectDisposedException in BuildsWhileBuildIsRunningOnServer test by @Copilot in https://github.com/dotnet/msbuild/pull/13316 * Add PoC of pipelines check skill by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13242 * Fix CodeSign.MissingSigningCert for xsd/Update-MSBuildXsds.ps1 by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13320 * Fix task host launch regressions from apphost support by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13325 * Enlighten GetFrameworkPath and GetFrameworkSdkPath. by @AR-May in https://github.com/dotnet/msbuild/pull/13282 * Add VMR codeflow health check to pipelines skill by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13326 * [main] Update dependencies from dotnet/roslyn by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13281 * Fix GenerateResource to track all ResXFileRef linked files for incremental builds by @OvesN in https://github.com/dotnet/msbuild/pull/13327 * Add escape hatch for not sharing assemblies from tools directory by @AR-May in https://github.com/dotnet/msbuild/pull/13305 * Add merge-dependency-updates skill for bot PR triage by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13331 * Add diagnostic data to crash/hang telemetry and move null-Project check after RetrieveFromCache by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13332 * Update remote-host-object.md with SDK .tlb shipping and IDispatch example by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13324 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13341 * improve task migration skill by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13234 * Fix telemetry PII concerns: sanitize exceptions, project paths, and custom names by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13344 * Use .exe.config when loading "as full Framework" by @rainersigwald in https://github.com/dotnet/msbuild/pull/13349 * Fix RequestCores/ReleaseCores fallback in OOP TaskHost: throw NotImplementedException instead of logging error by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13345 * Fixed indentation for _GetCopyToOutputDirectoryItemsFromTransitiveProjectReferences by @CEbbinghaus in https://github.com/dotnet/msbuild/pull/13358 * Fix Unix SessionId in handshake to enable cross-terminal node reuse by @JakeRadMSFT in https://github.com/dotnet/msbuild/pull/13354 * Revert "Migrate Exec task to TaskEnvironment API" by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13367 * Look for apphost when considering node reuse by @rainersigwald in https://github.com/dotnet/msbuild/pull/13368 * Move lots of shared code to Microsoft.Build.Framework by @DustinCampbell in https://github.com/dotnet/msbuild/pull/13364 * [main] Source code updates from dotnet/dotnet by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13353 * Fix ScheduleTimeRecord.AccumulatedTime hang during solution close by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13375 * Update runtime package references to 10.0.3 by @Copilot in https://github.com/dotnet/msbuild/pull/13376 * [main] Source code updates from dotnet/dotnet by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13378 * Fix ProjectImports.zip regression from shared FileUtilities statics by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13382 * Enrich EndBuild hang diagnostics with logging service and submission state by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13385 * Enhance path normalization: add handling for consecutive directory separators by @tommcdon in https://github.com/dotnet/msbuild/pull/13369 * Move task environment drivers to Framework. by @AR-May in https://github.com/dotnet/msbuild/pull/13380 * Update MicrosoftBuildVersion in analyzer template by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13298 * Replace ProjectCacheService null Project crash with diagnostic telemetry by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13396 * Add agentic workflow to auto-close PRs older than 180 days by @Copilot in https://github.com/dotnet/msbuild/pull/13400 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13575337 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13394 * Respect MSBUILDPRESERVETOOLTEMPFILES in ProcessExit cleanup by @DmitriyShepelev in https://github.com/dotnet/msbuild/pull/13395 ... (truncated) ## 18.5.4 ## What's Changed * remove dead code by @SimaTian in https://github.com/dotnet/msbuild/pull/13125 * Update VersionPrefix to 18.5.0 + insertion flow by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13134 * add multithreaded task migration agent skill by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13131 * Update MicrosoftBuildVersion in analyzer template by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13139 * Migrate VerifyFileHash task to TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13112 * Migrate GetFileHash tasks to TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13111 * Diagram of VS/SDK component interactions by @rainersigwald in https://github.com/dotnet/msbuild/pull/13127 * Fix package validation telemetry assembly resolution warnings by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13144 * Adds validation to throw MSB4259 when property references contain leading or trailing whitespace outside of conditions. by @huulinhnguyen-dev in https://github.com/dotnet/msbuild/pull/13076 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13203963 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13151 * Add MSBuild app host design by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12857 * Add Stabilize-Release.ps1 script for release process by @rainersigwald in https://github.com/dotnet/msbuild/pull/13146 * Fix chained item function empty result comparison in conditions by @JanProvaznik in https://github.com/dotnet/msbuild/pull/12901 * [main] Update dependencies from dotnet/roslyn by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13162 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13160 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13217622 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13163 * Fix items logged as type name during -getitem argument by @Copilot in https://github.com/dotnet/msbuild/pull/13166 * Respect NetCoreSdkRoot property for TaskHostParameters by @ViktorHofer in https://github.com/dotnet/msbuild/pull/13176 * Remove MachineIndependent configuration by @Copilot in https://github.com/dotnet/msbuild/pull/13180 * Remove redundant #nullable disable from 153 files by @Copilot in https://github.com/dotnet/msbuild/pull/13157 * Revert #13076 "Adds validation to throw MSB4259 when property references contain leading or trailing whitespace outside of conditions. by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13184 * Convert MSBuild.sln to slnx format and upate refs by @ViktorHofer in https://github.com/dotnet/msbuild/pull/13185 * Implement IMultiThreadableTask for Move task by @Copilot in https://github.com/dotnet/msbuild/pull/13108 * Add hostservices translation support for clr 4 task host by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13154 * Handle null ProjectFile in InvalidProjectFileException by @ViktorHofer in https://github.com/dotnet/msbuild/pull/13179 * Add $(LatestDotNetCoreForMSBuild) infrastructure for centralized framework targeting by @Copilot in https://github.com/dotnet/msbuild/pull/13189 * Fix TaskHost crash when task returns string[] with null elements by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13190 * Revert "Refactor Microsoft.IO usage" by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13194 * Allow null SdkResult from SdkResolver.Resolve by @rainersigwald in https://github.com/dotnet/msbuild/pull/13197 * Skill to test changes using just-built MSBuild by @rainersigwald in https://github.com/dotnet/msbuild/pull/13202 * Tell Copilot not to allow breaking changes by @rainersigwald in https://github.com/dotnet/msbuild/pull/13200 * Make nologo switch accept boolean values to enable explicit logo display control by @Copilot in https://github.com/dotnet/msbuild/pull/12541 * Migrate Unzip task to use TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13109 * Migrate ZipDirectory task to TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13110 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13246767 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13204 * Add .NET Standard compatibility warnings by @ViktorHofer in https://github.com/dotnet/msbuild/pull/13187 * Make WriteCodeFragment task locale-independent for reproducible builds by @Copilot in https://github.com/dotnet/msbuild/pull/13192 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13249478 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13207 * Fix TerminalLogger IndexOutOfRangeException when replaying binlog with fewer nodes by @Copilot in https://github.com/dotnet/msbuild/pull/12809 * Migrate DownloadFile task to use TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13113 * Add CI job for 2-stage build with -mt mode by @Copilot in https://github.com/dotnet/msbuild/pull/13124 * Localize AbsolutePath validation messages by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13115 * Refactor FrameworkFileUtilities for better performance by @AR-May in https://github.com/dotnet/msbuild/pull/13143 * Add agent instructions for MSBuild repository by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13198 * Add GetCanonicalForm to the AbsolutePath API by @AR-May in https://github.com/dotnet/msbuild/pull/13088 * Shouldly 4.3.0 by @rainersigwald in https://github.com/dotnet/msbuild/pull/13213 * Migrate WriteCodeFragment task to use TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13169 * Run the issue-labeler over pull requests using polling by @Copilot in https://github.com/dotnet/msbuild/pull/13223 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13225 ... (truncated) Commits viewable in [compare view](https://github.com/dotnet/msbuild/compare/v18.4.0...v18.8.2). </details> Updated [Microsoft.Build.Utilities.Core](https://github.com/dotnet/msbuild) from 18.4.0 to 18.8.2. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Build.Utilities.Core's releases](https://github.com/dotnet/msbuild/releases)._ ## 18.8.2 ## What's Changed * [vs16.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12550 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12739 * [vs17.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12740 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12743 * Add clear error message (MSB4233) for .NET runtime tasks on MSBuild 17.14 by @baronfel with @Copilot in https://github.com/dotnet/msbuild/pull/12662 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12759 * [vs17.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12760 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12762 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12744 * Remove audit sources from NuGet.config by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12796 * Bump System.Configuration.ConfigurationManager to 6.0.0 # by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12795 * Enable localization for vs17.14 build by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12799 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12814 * [vs17.14] Add test summary always in terminal logger by @nohwnd in https://github.com/dotnet/msbuild/pull/12852 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12575 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12889 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12892 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12891 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 12921813 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/12897 * Disable Localization for vs17.14 by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12903 * [automated] Merge branch 'vs16.11' => 'vs17.8' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/12798 * [vs17.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12815 * [automated] Merge branch 'vs17.14' => 'vs18.0' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/12917 * [vs17.8] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12934 * [vs17.11] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12935 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12941 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12940 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12939 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12966 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12965 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/12964 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13038 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13049 * [vs18.0] Fix MSB1025 error when using DistributedFileLogger (-dfl flag) by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13039 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13037 * [automated] Merge branch 'vs18.0' => 'vs18.3' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13052 * [vs17.12] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13101 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13098 * [vs17.14] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13100 * [vs18.3] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13102 * Backflow 10.0.2xx VMR by @dkurepa in https://github.com/dotnet/msbuild/pull/13121 * Disable localization for vs18.0 in build configuration by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13164 * Disable localization for vs18.3 by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13165 * [vs18.3] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13161 * [vs18.3] Stabilize package versions by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13233 * [vs18.3] Add Managed Identity for bootstrapper creation by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13249 * [automated] Merge branch 'vs18.0' => 'vs18.3' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13167 * [vs18.3] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13228 * [vs18.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13159 ... (truncated) ## 18.7.1 ## What's Changed * Fix TraceEngine file contention deadlock in multithreaded mode by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13446 * Remove duplicate test cases in MultithreadableTaskAnalyzer by @Youssef1313 in https://github.com/dotnet/msbuild/pull/13483 * Ensure ThreadSafeTaskAnalyzer.Tests is considered as a unit test project by @Youssef1313 in https://github.com/dotnet/msbuild/pull/13481 * Fix MSBuildTask0002 analyzer warnings in already-migrated tasks by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13466 * Fix race conditions in task host path resolution by @AR-May in https://github.com/dotnet/msbuild/pull/13485 * Migrate ToolTask and Al task to TaskEnvironment API by @OvesN in https://github.com/dotnet/msbuild/pull/13423 * Bump main to 18.7, add vs18.6 to merge flow by @MichalPavlik in https://github.com/dotnet/msbuild/pull/13472 * Avoid allocations in GetHashCode implementations by @DustinCampbell in https://github.com/dotnet/msbuild/pull/13475 * Add PATs rotation to agentic workflow(s) by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13496 * Fix ASP.NET WebSite projects to copy netstandard.dll facade when required by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13058 * Migrate AspNetCompiler to TaskEnvironment API by @OvesN in https://github.com/dotnet/msbuild/pull/13424 * Add review workflow by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13503 * Strengthen reviewer skill: add step-back analysis dimensions by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13504 * Add 'Request Speedometer Perf Run' to VS experimental insertion build policies by @Copilot in https://github.com/dotnet/msbuild/pull/13505 * Remove duplicate @ prefix from issueAuthor in GitOps by @akoeplinger in https://github.com/dotnet/msbuild/pull/13492 * Improve review aw by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13510 * Migrates unit tests to use RoslynCodeTaskFactory to enable running tests under .NET Core by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13500 * Fix cross-AppDomain TaskItem modifier cache regression by @DustinCampbell in https://github.com/dotnet/msbuild/pull/13493 * Discourage review agent from approving PRs by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13512 * Stop trying to deploy ValueTuple by @rainersigwald in https://github.com/dotnet/msbuild/pull/13507 * Ad-hoc re-sign bootstrap dotnet on macOS to prevent SIGKILL by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13513 * RoslynCodeTaskFactory: Log MSB3753 when task class does not implement ITask by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13517 * Update gh-aw (upon mcp policy changes) by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13526 * Eliminate XmlChildNodes allocations in GetXmlNodeInnerContents by @nareshjo in https://github.com/dotnet/msbuild/pull/13509 * Fix telemetry allocation regression: per-engine collector ownership by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13516 * Migrate to xunit.v3 by @Youssef1313 in https://github.com/dotnet/msbuild/pull/13482 * Fix stray brace in HandleBuildCancel trace string causing MSB1025 by @Copilot in https://github.com/dotnet/msbuild/pull/13535 * Bumping to 10.0.4 runtime packages by @MichalPavlik in https://github.com/dotnet/msbuild/pull/13533 * Remove early return in GetCanonicalForm, always call System.IO.Path by @OvesN in https://github.com/dotnet/msbuild/pull/13532 * Do not overwrite GetCopyToOutputDirectoryItemsDependsOn, just add new… by @snechaev in https://github.com/dotnet/msbuild/pull/13474 * Migrate GetReferenceAssemblyPaths task to TaskEnvironment API by @OvesN in https://github.com/dotnet/msbuild/pull/13495 * Stabilize ToolTaskThatTimeoutAndRetry test by @rainersigwald in https://github.com/dotnet/msbuild/pull/13489 * [automated] Merge branch 'vs18.6' => 'main' by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13506 * Add extra test assertions around tests by @Youssef1313 in https://github.com/dotnet/msbuild/pull/13536 * Add static eval for repo skills/agents via skill-validator by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13537 * Migrate SGen task to Task environment API by @OvesN in https://github.com/dotnet/msbuild/pull/13457 * Fix TerminalLogger assert failure for metaproj files and cached project eval ID by @OvesN in https://github.com/dotnet/msbuild/pull/13480 * Filter out approving review from pr-reviewer agent by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13553 * Use a unique task name per invocation to tabilize RoslynCodeTaskFactory_ReuseCompilation test by @huulinhnguyen-dev in https://github.com/dotnet/msbuild/pull/13551 * Brief doc on feedback/logging/data systems by @rainersigwald in https://github.com/dotnet/msbuild/pull/13554 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13881982 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13437 * Stage 3: Forward BuildProjectFile* callbacks from OOP TaskHost to worker node by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13350 * Enable TaskHost Callbacks by default by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13579 * Remove unactionable info from reviewer agent by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13578 * Enlighten RequiresFramework35SP1Assembly task for multithreaded mode by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13575 * Make SdkResolver-provided environment variables take precedence over ambient environment by @Copilot in https://github.com/dotnet/msbuild/pull/12655 * Add dotnet/skills marketplace and enable plugins by @Evangelink in https://github.com/dotnet/msbuild/pull/13582 * The skills/agents check filters-in only touched files by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13586 * Fix skill-validation workflow failing when agents directory is deleted by @JeremyKuhne in https://github.com/dotnet/msbuild/pull/13592 ... (truncated) ## 18.6.3 ## What's Changed * Improve cross-platform node discovery for reuse with NodeMode filtering by @Copilot in https://github.com/dotnet/msbuild/pull/13256 * Updated common types XSD to remove errors from redefining `Include` attributes by @glektarssza in https://github.com/dotnet/msbuild/pull/13284 * Update VersionPrefix to 18.6.0 + insertion flow by @MichalPavlik in https://github.com/dotnet/msbuild/pull/13296 * Log warnings for skipped STR resource keys instead of failing the build by @OvesN in https://github.com/dotnet/msbuild/pull/13291 * Isolate MSBuildTaskHost from the rest of MSBuild Codebase by @DustinCampbell in https://github.com/dotnet/msbuild/pull/13232 * Improve error messages when ToolTask overrides exit code 0 to -1 due to logged errors by @OvesN in https://github.com/dotnet/msbuild/pull/13303 * Migrate Exec task to TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13171 * Enhance crash telemetry with richer diagnostics and EndBuild hang detection by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13304 * [main] Update dependencies from nuget/nuget.client by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13309 * [IBuildEngine callbacks] Stage 2: RequestCores/ReleaseCores by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13306 * Only get command line args names on modern .NET by @baronfel in https://github.com/dotnet/msbuild/pull/13314 * Detect and correct worker node over-provisioning by @Copilot in https://github.com/dotnet/msbuild/pull/13220 * Add App Host Support for MSBuild by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13175 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13311 * Fix ObjectDisposedException in BuildsWhileBuildIsRunningOnServer test by @Copilot in https://github.com/dotnet/msbuild/pull/13316 * Add PoC of pipelines check skill by @JanKrivanek in https://github.com/dotnet/msbuild/pull/13242 * Fix CodeSign.MissingSigningCert for xsd/Update-MSBuildXsds.ps1 by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13320 * Fix task host launch regressions from apphost support by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13325 * Enlighten GetFrameworkPath and GetFrameworkSdkPath. by @AR-May in https://github.com/dotnet/msbuild/pull/13282 * Add VMR codeflow health check to pipelines skill by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13326 * [main] Update dependencies from dotnet/roslyn by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13281 * Fix GenerateResource to track all ResXFileRef linked files for incremental builds by @OvesN in https://github.com/dotnet/msbuild/pull/13327 * Add escape hatch for not sharing assemblies from tools directory by @AR-May in https://github.com/dotnet/msbuild/pull/13305 * Add merge-dependency-updates skill for bot PR triage by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13331 * Add diagnostic data to crash/hang telemetry and move null-Project check after RetrieveFromCache by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13332 * Update remote-host-object.md with SDK .tlb shipping and IDispatch example by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13324 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13341 * improve task migration skill by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13234 * Fix telemetry PII concerns: sanitize exceptions, project paths, and custom names by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13344 * Use .exe.config when loading "as full Framework" by @rainersigwald in https://github.com/dotnet/msbuild/pull/13349 * Fix RequestCores/ReleaseCores fallback in OOP TaskHost: throw NotImplementedException instead of logging error by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13345 * Fixed indentation for _GetCopyToOutputDirectoryItemsFromTransitiveProjectReferences by @CEbbinghaus in https://github.com/dotnet/msbuild/pull/13358 * Fix Unix SessionId in handshake to enable cross-terminal node reuse by @JakeRadMSFT in https://github.com/dotnet/msbuild/pull/13354 * Revert "Migrate Exec task to TaskEnvironment API" by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13367 * Look for apphost when considering node reuse by @rainersigwald in https://github.com/dotnet/msbuild/pull/13368 * Move lots of shared code to Microsoft.Build.Framework by @DustinCampbell in https://github.com/dotnet/msbuild/pull/13364 * [main] Source code updates from dotnet/dotnet by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13353 * Fix ScheduleTimeRecord.AccumulatedTime hang during solution close by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13375 * Update runtime package references to 10.0.3 by @Copilot in https://github.com/dotnet/msbuild/pull/13376 * [main] Source code updates from dotnet/dotnet by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13378 * Fix ProjectImports.zip regression from shared FileUtilities statics by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13382 * Enrich EndBuild hang diagnostics with logging service and submission state by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13385 * Enhance path normalization: add handling for consecutive directory separators by @tommcdon in https://github.com/dotnet/msbuild/pull/13369 * Move task environment drivers to Framework. by @AR-May in https://github.com/dotnet/msbuild/pull/13380 * Update MicrosoftBuildVersion in analyzer template by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13298 * Replace ProjectCacheService null Project crash with diagnostic telemetry by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13396 * Add agentic workflow to auto-close PRs older than 180 days by @Copilot in https://github.com/dotnet/msbuild/pull/13400 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13575337 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13394 * Respect MSBUILDPRESERVETOOLTEMPFILES in ProcessExit cleanup by @DmitriyShepelev in https://github.com/dotnet/msbuild/pull/13395 ... (truncated) ## 18.5.4 ## What's Changed * remove dead code by @SimaTian in https://github.com/dotnet/msbuild/pull/13125 * Update VersionPrefix to 18.5.0 + insertion flow by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13134 * add multithreaded task migration agent skill by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13131 * Update MicrosoftBuildVersion in analyzer template by @github-actions[bot] in https://github.com/dotnet/msbuild/pull/13139 * Migrate VerifyFileHash task to TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13112 * Migrate GetFileHash tasks to TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13111 * Diagram of VS/SDK component interactions by @rainersigwald in https://github.com/dotnet/msbuild/pull/13127 * Fix package validation telemetry assembly resolution warnings by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13144 * Adds validation to throw MSB4259 when property references contain leading or trailing whitespace outside of conditions. by @huulinhnguyen-dev in https://github.com/dotnet/msbuild/pull/13076 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13203963 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13151 * Add MSBuild app host design by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/12857 * Add Stabilize-Release.ps1 script for release process by @rainersigwald in https://github.com/dotnet/msbuild/pull/13146 * Fix chained item function empty result comparison in conditions by @JanProvaznik in https://github.com/dotnet/msbuild/pull/12901 * [main] Update dependencies from dotnet/roslyn by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13162 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13160 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13217622 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13163 * Fix items logged as type name during -getitem argument by @Copilot in https://github.com/dotnet/msbuild/pull/13166 * Respect NetCoreSdkRoot property for TaskHostParameters by @ViktorHofer in https://github.com/dotnet/msbuild/pull/13176 * Remove MachineIndependent configuration by @Copilot in https://github.com/dotnet/msbuild/pull/13180 * Remove redundant #nullable disable from 153 files by @Copilot in https://github.com/dotnet/msbuild/pull/13157 * Revert #13076 "Adds validation to throw MSB4259 when property references contain leading or trailing whitespace outside of conditions. by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13184 * Convert MSBuild.sln to slnx format and upate refs by @ViktorHofer in https://github.com/dotnet/msbuild/pull/13185 * Implement IMultiThreadableTask for Move task by @Copilot in https://github.com/dotnet/msbuild/pull/13108 * Add hostservices translation support for clr 4 task host by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13154 * Handle null ProjectFile in InvalidProjectFileException by @ViktorHofer in https://github.com/dotnet/msbuild/pull/13179 * Add $(LatestDotNetCoreForMSBuild) infrastructure for centralized framework targeting by @Copilot in https://github.com/dotnet/msbuild/pull/13189 * Fix TaskHost crash when task returns string[] with null elements by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13190 * Revert "Refactor Microsoft.IO usage" by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13194 * Allow null SdkResult from SdkResolver.Resolve by @rainersigwald in https://github.com/dotnet/msbuild/pull/13197 * Skill to test changes using just-built MSBuild by @rainersigwald in https://github.com/dotnet/msbuild/pull/13202 * Tell Copilot not to allow breaking changes by @rainersigwald in https://github.com/dotnet/msbuild/pull/13200 * Make nologo switch accept boolean values to enable explicit logo display control by @Copilot in https://github.com/dotnet/msbuild/pull/12541 * Migrate Unzip task to use TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13109 * Migrate ZipDirectory task to TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13110 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13246767 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13204 * Add .NET Standard compatibility warnings by @ViktorHofer in https://github.com/dotnet/msbuild/pull/13187 * Make WriteCodeFragment task locale-independent for reproducible builds by @Copilot in https://github.com/dotnet/msbuild/pull/13192 * Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13249478 by @dotnet-bot in https://github.com/dotnet/msbuild/pull/13207 * Fix TerminalLogger IndexOutOfRangeException when replaying binlog with fewer nodes by @Copilot in https://github.com/dotnet/msbuild/pull/12809 * Migrate DownloadFile task to use TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13113 * Add CI job for 2-stage build with -mt mode by @Copilot in https://github.com/dotnet/msbuild/pull/13124 * Localize AbsolutePath validation messages by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13115 * Refactor FrameworkFileUtilities for better performance by @AR-May in https://github.com/dotnet/msbuild/pull/13143 * Add agent instructions for MSBuild repository by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/13198 * Add GetCanonicalForm to the AbsolutePath API by @AR-May in https://github.com/dotnet/msbuild/pull/13088 * Shouldly 4.3.0 by @rainersigwald in https://github.com/dotnet/msbuild/pull/13213 * Migrate WriteCodeFragment task to use TaskEnvironment API by @Copilot in https://github.com/dotnet/msbuild/pull/13169 * Run the issue-labeler over pull requests using polling by @Copilot in https://github.com/dotnet/msbuild/pull/13223 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/13225 ... (truncated) Commits viewable in [compare view](https://github.com/dotnet/msbuild/compare/v18.4.0...v18.8.2). </details> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> ###### Microsoft Reviewers: [Open in CodeFlow](https://microsoft.github.io/open-pr/?codeflow=https://github.com/Azure/bicep/pull/20076) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Worker Node Over-Provisioning Detection
Implementing feature to detect and correct over-provisioning of worker nodes when multiple MSBuild instances run concurrently.
Status: Ready for Review ✅
Successfully rebased on the latest version of PR #13256 as requested.
Recent Updates
Latest Rebase (commit 420cfb9):
TryGetCommandLineAPINodeModeHelper.ExtractFromCommandLineintegrationImplementation Details
Core Implementation:
src/Build/BackEnd/Components/Communications/NodeProviderOutOfProcBase.cs(+114 lines)ShutdownConnectedNodes: Modified to use per-node reuse decisionsDetermineNodesForReuse: Core logic for selective node reuseGetNodeReuseThreshold: Virtual method (default: NUM_PROCS/2)CountSystemWideActiveNodes: Uses improved detection from PR Improve cross-platform node discovery for reuse with NodeMode filtering #13256GetPossibleRunningNodes(expectedNodeMode: NodeMode.OutOfProcNode)Tests:
src/Build.UnitTests/BackEnd/NodeProviderOutOfProc_Tests.cs(+169 lines, new file)How It Works
When a build completes and
ShutdownConnectedNodes(enableReuse=true)is called:NodeBuildCompletepackets per nodeBenefits of PR #13256 Integration
The improved node detection from PR #13256 (latest version) provides:
Customer Impact
Reduces resource consumption in scenarios with concurrent builds (DevKit, LLM agents, CI/CD pipelines). System will maintain reasonable node count (NUM_PROCS/2) instead of accumulating 25+ lingering nodes.
Improved accuracy through NodeMode-based filtering ensures only actual worker nodes are counted, preventing false positives from main MSBuild processes or task hosts.
Thresholds
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.