К основному содержанию
скилл CX Codex

resolve-project-references — скилл для Codex

Помогает не оптимизировать ResolveProjectReferences по вводящей в заблуждение метрике MSBuild. Нужен при разборе медленной сборки с binlog.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add dotnet/skills --skill resolve-project-references -a claude-code
Открыть на GitHub

Что делает resolve-project-references

Скилл разбирает случай, когда ResolveProjectReferences лидирует в Target Performance Summary. Время этой цели включает ожидание сборки зависимых проектов, пока узел MSBuild передаёт работу, поэтому оно не равно затратам процессора самой цели.

Вместо прямой оптимизации ResolveProjectReferences он направляет разбор к Task Performance Summary и времени самих задач. Предпочтителен инструмент expensive_tasks из binlog MCP-сервера; без него скилл предлагает воспроизвести текстовый журнал через dotnet msbuild и найти сводку задач.

Нужен диагностический журнал сборки или build.binlog с Target Performance Summary. Без такого журнала разбор не начнётся, поэтому это повод сначала снять данные о сборке. Если узкое место окажется в Csc, Copy или ResolveAssemblyReference, скилл направит к build-perf-diagnostics.

Какие задачи решает

  • не принять ожидание зависимых проектов за работу цели
  • найти реальную дорогую задачу в binlog
  • сопоставить Target Performance Summary со сводкой задач
  • получить ранжирование задач по собственному времени
  • переключить разбор Csc или Copy на нужный скилл

Примеры запросов агенту

  • Разбери build.binlog: почему ResolveProjectReferences занимает больше всего времени?
  • Проверь Target Performance Summary и найди настоящую дорогую задачу вместо ResolveProjectReferences.
  • У меня есть диагностический журнал MSBuild; сравни время ResolveProjectReferences с Task Performance Summary.

Как установить resolve-project-references

1Через Skills CLI (Vercel)

npx skills add dotnet/skills --skill resolve-project-references -a claude-code

2Вручную: положить файлы

~/.claude/skills/resolve-project-references/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/resolve-project-references/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора101

thread-abort-migration Переводит устаревший вызов Thread.Abort из .NET Framework на кооперативную отмену задач через CancellationToken в .NET 6+. Помогает убрать ошибки PlatformNotSupportedException и предупреждения SYSLIB0006. CX Codex +1 3 300установок maui-app-lifecycle Подсказывает агенту, как правильно обрабатывать переходы состояний приложения .NET MAUI и сохранять данные при сворачивании. CX Codex +1 3 300установок generate-testability-wrappers Скилл генерирует обёртки и регистрацию в DI для статических зависимостей C#, из-за которых код не получается покрыть тестами. CX Codex +1 3 300установок nuget-trusted-publishing Настраивает публикацию пакетов в nuget.org через GitHub Actions и OIDC без постоянных API-ключей. Пригодится при переводе сборки на NuGet/login или создании нового пайплайна. CX Codex +1 3 300установок migrate-dotnet8-to-dotnet9 Скилл ведёт проект с net8.0 на net9.0: правит TargetFramework, разбирает ошибки сборки и поведенческие изменения .NET 9, C# 13, ASP.NET Core 9 и EF Core 9. CX Codex +1 3 400установок including-generated-files Помогает подключить файлы, созданные во время сборки, к компиляции или выходным данным MSBuild. Нужен, когда созданный файл не подхватывается автоматически. CX Codex +1 3 400установок clr-activation-debugging Скилл читает логи активации CLR от mscoree.dll и показывает, какую версию рантайма выбрал шим и на каком шаге выбор сломался. CX Codex +1 3 400установок mtp-hot-reload Настраивает горячую перезагрузку тестов в консольном хосте Microsoft Testing Platform и перезапускает их после правок кода. CX Codex +1 3 400установок

Похожие

dotnet-project-structure Aaronontheweb Скилл подсказывает агенту, как разложить .NET-решение: .slnx, Directory.Build.props, центральные версии пакетов и SourceLink. CX Codex +1 658установок project-structure codewithmukesh Скилл задаёт агенту правила раскладки .NET-решения: центральные версии пакетов, общие свойства сборки, формат .slnx и именование проектов. CX Codex +1 2 800установок project-references dboeckli Скилл ищет конвенции и готовые реализации в ваших же GitHub-репозиториях, склонированных в ~/projects/referenzen/, и ссылается на источник. CX Codex +1 3 900установок container-publish codewithmukesh Собирает OCI-образы прямо из dotnet publish /t:PublishContainer, без Dockerfile. Пригодится, когда проект на .NET 10 надо упаковать в контейнер и запушить в реестр. CX Codex +1 2 800установок kotlin-tooling-native-build-performance JetBrains Разбирает, почему iOS-сборка в Kotlin Multiplatform идёт медленно, и предлагает безопасные правки с замером до и после. CX Codex +1 943установок scaffolding-oracle-to-postgres-migration-test-project официальный github Создаёт пустой xUnit-проект интеграционных тестов для Oracle в .NET-решении. Нужен перед написанием базовых тестов на этапе Phase 3. 1 700установок

Рядом в теме «DevOps и инфраструктура»

Всё по теме «DevOps и инфраструктура» →

Вопросы о resolve-project-references

Как установить resolve-project-references в Codex?

Выполните npx skills add dotnet/skills --skill resolve-project-references -a codex. Файл скилла будет находиться в .agents/skills/resolve-project-references/SKILL.md.

Что делает resolve-project-references?

Скилл объясняет, почему большое время ResolveProjectReferences в Target Performance Summary может отражать ожидание зависимых проектов. Он переводит анализ к собственному времени задач в Task Performance Summary.

Что нужно для работы со скиллом?

Нужен диагностический build log или binlog, содержащий Target Performance Summary. Для ранжирования задач он использует expensive_tasks из binlog MCP-сервера, а при его отсутствии предлагает разбор текстового журнала.

Исходный текст

SKILL.md · MIT
---
name: resolve-project-references
description: "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."
license: MIT
---

# 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

| Input | Required | Description |
|-------|----------|-------------|
| Build log or binlog | Yes | A 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)

```bash
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

© dotnet · MIT · dotnet/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой