Skip to content

Add cold-start benchmark for MSBuild server#14452

Draft
OvesN wants to merge 1 commit into
dotnet:mainfrom
OvesN:dev/veronikao/preheat-msbuild-server
Draft

Add cold-start benchmark for MSBuild server#14452
OvesN wants to merge 1 commit into
dotnet:mainfrom
OvesN:dev/veronikao/preheat-msbuild-server

Conversation

@OvesN

@OvesN OvesN commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Add localization coverage to keep future startup reordering from formatting deferred logging warnings before console UI culture is applied.

Fixes #

Context

Changes Made

Testing

Notes

Add localization coverage to keep future startup reordering from formatting deferred logging warnings before console UI culture is applied.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comment on lines +65 to +84
ProcessStartInfo startInfo = new()
{
FileName = _msbuildPath,
Arguments = $"\"{_projectPath}\" -nologo -verbosity:quiet -mt -nodeReuse:false -p:BenchmarkProcessIdFile=\"{_processIdPath}\"",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true,
};
startInfo.Environment["MSBUILDUSESERVER"] = "1";
startInfo.Environment["MSBUILDNODEHANDSHAKESALT"] = Guid.NewGuid().ToString("N");
startInfo.Environment["MSBUILDENABLEALLPROPERTYFUNCTIONS"] = "1";

using Process process = Process.Start(startInfo)
?? throw new InvalidOperationException("Failed to start MSBuild.");
Task<string> outputTask = process.StandardOutput.ReadToEndAsync();
Task<string> errorTask = process.StandardError.ReadToEndAsync();
process.WaitForExit();
string output = outputTask.GetAwaiter().GetResult();
string error = errorTask.GetAwaiter().GetResult();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're moving to target .NET 11 in Viktor's branch - suggest having the benchmarks target that and using the new One-shot process APIs to make sure you're not artificially stalling the stdout/stderr-draining worker threads.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants