resolve-project-references

Explains why ResolveProjectReferences time in MSBuild summaries is misleading and redirects analysis to task self-time.

Updated Jul 12, 2026
One-click install
npx skills add https://github.com/Patrick-Rex/DotNetTechSamples --skill resolve-project-references-patrick-rex
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: resolve-project-references
Source: https://github.com/Patrick-Rex/DotNetTechSamples/tree/main/.agents/plugins/dotnet-msbuild/skills/resolve-project-references
Command: npx skills add https://github.com/Patrick-Rex/DotNetTechSamples --skill resolve-project-references-patrick-rex

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? When MSBuild performance summaries show ResolveProjectReferences consuming 50-80% of build time, developers often waste effort optimizing the wrong target. This Skill explains that the reported time is wall-clock wait time for dependent project builds, not actual CPU work, and redirects analysis to the real bottleneck. ## Core Features & Use Cases - Misleading Metric Detection: Confirms when ResolveProjectReferences appears as the top target in the Target Performance Summary and explains why the number is inflated by node-yield wait time (dotnet/msbuild#3135). - Task Self-Time Redirection: Guides users to the Task Performance Summary via the binlog MCP expensive_tasks tool, with a text-log replay fallback using dotnet msbuild and grep. - Bottleneck Routing: Points identified tasks (Csc, ResolveAssemblyReference, Copy) to the appropriate follow-up skills such as build-perf-diagnostics and build-parallelism. - Use Case: A developer sees ResolveProjectReferences taking 70% of a solution build. Instead of trying to optimize project references, they use this Skill to discover that Csc analyzer execution is the true bottleneck. ## Quick Start Analyze my build.binlog and tell me why ResolveProjectReferences dominates the Target Performance Summary and which task is the real bottleneck.

Frequently Asked Questions about resolve-project-references

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

FAQPage Schema
Why is ResolveProjectReferences the slowest target in my MSBuild log?

ResolveProjectReferences time includes wall-clock waiting for dependent projects to build while the MSBuild node is yielded (dotnet/msbuild#3135). The target itself does very little work, so the reported number is misleading and should not be optimized directly.

How do I find the real build bottleneck in MSBuild?

Use the Task Performance Summary instead of the Target Performance Summary. Query the binlog with the binlog MCP expensive_tasks tool, or replay the binlog with dotnet msbuild -flp:v=diag;performancesummary and grep for Task Performance Summary to see task self-time.

Should I try to optimize ResolveProjectReferences directly?

No. Its reported time is wait time for dependent project builds, not CPU work. Focus on the self-time of actual tasks like Csc, ResolveAssemblyReference, or Copy, which are covered by the build-perf-diagnostics skill.

What if the binlog MCP server is not available?

Replay the binlog with dotnet msbuild build.binlog -noconlog -fl "-flp:v=diag;logfile=full.log;performancesummary", then grep for "Task Performance Summary" in full.log to inspect task self-time rankings.

When should I use build-perf-diagnostics instead of this skill?

Use build-perf-diagnostics for general build performance optimization or when the bottleneck is clearly a different target such as Csc or ResolveAssemblyReference. This skill only applies when ResolveProjectReferences misleadingly tops the Target Performance Summary.