When a build is multithreaded, MSBuild should always run through MSBuild Server, because the server process is the only way we enable Server GC, and Server GC is essential for MT mode (all project work runs on threads inside one process, so Workstation GC becomes a major throughput/allocation bottleneck). Today, /nodeReuse:false (or MSBUILDDISABLENODEREUSE=1 ) unconditionally disables the server. Instead of treating "no node reuse" as "no server", -mt should still launch the server and simply shut it down at the end of the build rather than keeping it persistent for reuse.
When a build is multithreaded, MSBuild should always run through MSBuild Server, because the server process is the only way we enable Server GC, and Server GC is essential for MT mode (all project work runs on threads inside one process, so Workstation GC becomes a major throughput/allocation bottleneck). Today,
/nodeReuse:false(or MSBUILDDISABLENODEREUSE=1 ) unconditionally disables the server. Instead of treating "no node reuse" as "no server", -mt should still launch the server and simply shut it down at the end of the build rather than keeping it persistent for reuse.