mcpField
R
resolve-project-references

resolve-project-references

github.com/dotnetDevelopment5.8k3.5k installsUpdated 1d ago
Repository

About resolve-project-references

A diagnostic skill for developers investigating MSBuild performance reports. It explains why ResolveProjectReferences time can reflect waiting for dependent projects and directs analysis toward task self-time.

Key features

  1. 01Identify misleading target timings
  2. 02Explain waits on dependent projects
  3. 03Use task performance summaries
  4. 04Rank task self-time with binlog MCP
  5. 05Replay text logs as a fallback

Use cases

  1. 01Investigate ResolveProjectReferences at the top of a report
  2. 02Redirect optimization from target time to task self-time
  3. 03Find bottlenecks in build performance summaries

MCP support

The skill recommends the binlog MCP server’s expensive_tasks tool to rank task self-times from a build log.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dotnet/skills --skill resolve-project-references

After installing, type/resolve-project-referencesin Claude Code to confirm it loaded.

Details

From the project README

Misleading ResolveProjectReferences Time

Prevent misguided optimization of ResolveProjectReferences by explaining that its reported time is wall-clock wait time, not CPU work.

When to Use

  • ResolveProjectReferences appears as the most expensive target in the Target Performance Summary
  • A developer is trying to optimize ResolveProjectReferences directly
  • Build performance analysis shows a single target consuming 50-80% of total build time

When Not to Use

  • General build performance optimization (use build-perf-diagnostics instead)
  • The bottleneck is clearly a different target (e.g., Csc, ResolveAssemblyReference)
  • The user has not yet captured a binlog or performance summary

Inputs

InputRequiredDescription
Build log or binlogYesA diagnostic build log or binlog containing the Target Performance Summary

Workflow

Step 1: Confirm the misleading symptom

Verify that ResolveProjectReferences appears as the top target in the Target Performance Summary. This is the misleading metric.

Step 2: Explain why it is misleading

The reported time includes waiting for dependent projects to build while the MSBuild node is yielded (see dotnet/msbuild#3135). During this wait, the node may be doing useful work on other projects. The target itself does very little work.

Step 3: Redirect to task self-time

Use the Task Performance Summary to identify the real bottleneck.

Primary: binlog MCP (preferred)

Use the binlog MCP server expensive_tasks tool to get task self-time rankings directly from the binlog.

Fallback: text-log replay (when MCP is unavailable)
dotnet msbuild build.binlog -noconlog -fl "-flp:v=diag;logfile=full.log;performancesummary"
grep "Task Performance Summary" -A 50 full.log

Focus on self-time of actual tasks:

  • Csc: see build-perf-diagnostics skill (Section 2: Roslyn Analyzers)
  • ResolveAssemblyReference: see build-perf-diagnostics skill (Section 1: RAR)
  • Copy: see build-perf-diagnostics skill (Section 4: File I/O)
  • Serialization bottlenecks: see build-parallelism skill

Validation

  • Task Performance Summary was used instead of Target Performance Summary
  • ResolveProjectReferences was not set as the optimization target
  • A concrete task (e.g., Csc, Copy, ResolveAssemblyReference) was identified as the true bottleneck

Comments

Markdown supported