Generated banner for Resolve Project References
Generated logo for Resolve Project References

Resolve Project References

.NET (Microsoft)OfficialPublished by .NET (Microsoft)

  • Skill
  • Guidelines
  • Software development
  • MIT
  • No issues found

From the author

Guide for interpreting ResolveProjectReferences time in MSBuild performance summaries. Activate when ResolveProjectReferences appears as the most expensive target and developers are trying to optimize it directly. Explains that the reported time includes wait time for dependent project builds and is misleading. Guides users to focus on task self-time instead. Do not activate for general build performance -- use build-perf-diagnostics instead.
— the description by .NET (Microsoft)

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides guidance for developers analyzing MSBuild performance summaries. It specifically addresses the common pitfall of misinterpreting the ResolveProjectReferences target time, which often appears as a major bottleneck but actually reflects wall-clock wait time for dependent projects rather than CPU-intensive work. The skill instructs users to shift their focus toward Task Performance Summary data to identify actual build bottlenecks.

What it does

  • Explains why ResolveProjectReferences time is often misleading in build logs.
  • Clarifies that the reported time includes wait time for dependent project builds.
  • Directs users to analyze Task Performance Summary data instead of Target Performance Summary.
  • Provides methods for extracting task self-time from binlogs.
  • Offers guidance on identifying true performance bottlenecks like Csc or ResolveAssemblyReference.
  • Validates the analysis process to ensure developers do not waste time optimizing the wrong target.

When to use it

  • When ResolveProjectReferences is identified as the most expensive target in a build performance summary.
  • When a developer is attempting to optimize ResolveProjectReferences directly.
  • When a single target appears to consume 50-80% of total build time.
  • When a diagnostic build log or binlog is available for analysis.

Advantages

  • Prevents wasted engineering effort on non-actionable targets.
  • Improves accuracy in build performance diagnostics.
  • Directs developers to actionable task-level metrics.
  • Reduces confusion regarding MSBuild performance reporting.

Usage examples

“Why is ResolveProjectReferences taking 90% of my build time?”
The agent explains that this is likely a misleading metric caused by waiting for dependencies and guides the user to check the Task Performance Summary for the actual bottleneck.
“How do I optimize ResolveProjectReferences?”
The agent clarifies that this target is usually not the source of the delay and provides steps to identify the real task-level performance issues.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/dotnet/resolve-project-references/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip resolve-project-references.zip -d .agents/skills

Documentation by .NET (Microsoft)

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

Files

ATTRIBUTION.md

Attribution

This folder is an unmodified copy of the Agent Skill "resolve-project-references", distributed by AutoGineer (https://autogineer.com/agent-skills).

The skill's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.

Files added by AutoGineer

  • ATTRIBUTION.md: this file, written by AutoGineer

  • LICENSE: copied from LICENSE

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an MCP server, Needs Node.js

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
.NET (Microsoft)
Publisher
.NET (Microsoft) (Official)
Source
dotnet/skills · plugins/dotnet-msbuild/skills/resolve-project-references · commit 96c3d68
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by .NET (Microsoft).

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download resolve-project-references.zip