build-perf-baseline

Measures MSBuild cold, warm, and no-op build times and applies systematic optimization techniques.

Updated Sep 22, 2026
One-click install
npx skills add https://github.com/bytecakelake/Nurse-Scheduler --skill build-perf-baseline-bytecakelake
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: build-perf-baseline
Source: https://github.com/bytecakelake/Nurse-Scheduler/tree/main/.agents/plugins/dotnet-msbuild/skills/build-perf-baseline
Command: npx skills add https://github.com/bytecakelake/Nurse-Scheduler --skill build-perf-baseline-bytecakelake

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Slow .NET builds are hard to fix without measurements, and optimization without a baseline is guesswork. This Skill establishes cold, warm, and no-op build baselines and then applies proven MSBuild optimization techniques. ## Core Features & Use Cases - Baseline Measurement: Capture cold, warm, and no-op build timings with binary logs to identify whether restore, compilation, or incremental checks are the bottleneck. - Optimization Techniques: Apply MSBuild Server, artifacts output layout, deterministic builds, dependency graph trimming, static graph builds (/graph), and parallel build tuning. - Decision Tree: Follow a structured flowchart that routes slow no-op builds to incremental-build fixes and slow cold builds to diagnostics or parallelism tuning. - Use Case: Your solution's no-op build takes 45 seconds. Use this Skill to baseline all three scenarios, confirm incremental build is broken, then move to the incremental-build skill to fix Inputs/Outputs. ## Quick Start Ask the AI to baseline my solution's build performance by measuring cold, warm, and no-op builds with binlogs and suggest optimizations.

Frequently Asked Questions about build-perf-baseline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I measure .NET build performance?▼

Measure three scenarios: a cold build after deleting bin/obj folders, a warm build after touching one source file, and a no-op build with no changes. Capture each with dotnet build /bl:<name>.binlog -m so timings can be analyzed in a binlog viewer.

Why is my no-op dotnet build slow?▼

A no-op build exceeding 30 seconds usually means incremental build is broken and targets are not skipping up-to-date outputs. Check that Inputs/Outputs are declared correctly on custom targets, then investigate with the incremental-build skill.

When should I use dotnet build /graph static graph builds?▼

Use /graph for large solutions with 20 or more projects and in CI, where upfront graph evaluation improves scheduling and parallelism. Avoid it for small solutions under 5 projects, and ensure ProjectReference items are statically declared outside targets.

What does UseArtifactsOutput do in .NET 8?▼

UseArtifactsOutput redirects all build output into a single artifacts/ directory with unique paths per project and configuration. It eliminates bin/obj clashes, simplifies CI caching to one directory, and keeps multi-targeting outputs separated.

How do I reduce unnecessary project rebuilds in MSBuild?▼

Trim the dependency graph by removing redundant transitive ProjectReferences, using ReferenceOutputAssembly="false" for build-order-only dependencies, and PrivateAssets="all" for internal implementation details. This shortens the critical path and limits rebuild scope.

When should I restart the MSBuild build server?▼

Restart with dotnet build-server shutdown after updating the .NET SDK, changing custom MSBuild tasks or props/targets, or observing stale behavior across repeated builds. The server restarts automatically on the next build.