AIKraft/Skills/Производительность eval

Производительность eval

Guide for diagnosing and improving MSBuild project evaluation performance. USE FOR: builds slow before any compilation starts, high evaluation time in binlog analysis, expensive glob patterns walking large directories (node_modules, .git, bin/obj), deep import chains (>20 levels), preprocessed output >10K lines indicating heavy evaluation, property functions with file I/O ($([System.IO.File]::Read

dotnet official Дизайн

Что делает навык

Навык предназначен для диагностики и устранения узких мест в фазе оценки (evaluation) проектов MSBuild, которая происходит до запуска целевых задач. Он помогает выявить причины медленного старта сборки, такие как затратные glob-паттерны, глубокие цепочки импорта или тяжелые вычисления в свойствах.

Когда применять

  • Медленный запуск сборки, вызванный длительной фазой оценки, а не компиляцией.
  • Высокое время оценки, зафиксированное в binlog или отчете о производительности.
  • Наличие затратных glob-паттернов, обходящих большие директории (node_modules, .git, bin/obj).
  • Глубокие цепочки импорта (>20 уровней) или предобработанный вывод >10K строк.
  • Использование функций свойств с файловым вводом-выводом ($([System.IO.File]::ReadAllText(...))).

Как работает

  1. Подтвердить проблему с помощью измерений: использовать binlog MCP (инструменты evaluations, imports, properties) или текстовый лог (grep 'Evaluation started/finished').
  2. Проверить размер предобработанного вывода командой dotnet msbuild -pp:full.xml; объем >10K строк указывает на тяжелую оценку.
  3. Проверить время оценки через /clp:PerformanceSummary и убедиться, что оценка происходит один раз на проект/TFM.
  4. Анализировать глобальные свойства и цепочки импорта для выявления множественных оценок или избыточных импортов.
  5. Рекомендовать целевые изменения: использование <DefaultItemExcludes> для исключения больших директорий, сужение путей в glob или оптимизацию импортов.
  6. Избегать отключения SDK-значений по умолчанию (EnableDefaultItems) без доказательств необходимости; предпочитать минимальные изменения.

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

Сборка проекта запускается слишком долго, но компиляция кода не идет. Проанализируй binlog и найди узкие места в фазе оценки.
В проекте много файлов, и dotnet msbuild -pp выдает огромный XML. Оптимизируй glob-паттерны, чтобы исключить node_modules и bin/obj.
В свойствах проекта используются вызовы System.IO.File. Проверь, не замедляют ли они оценку, и предложи безопасную альтернативу.

Что понадобится

  • Инструмент binlog MCP (Microsoft.AITools.BinlogMcp) для анализа производительности.
  • Доступ к .binlog файлам или возможности запуска сборки с флагами /pp и /clp:PerformanceSummary.
  • Наличие измерений времени оценки (binlog или логи), так как навык требует подтверждения проблемы цифрами.

Описание составлено по SKILL.md навыка, сверено 06.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «eval-performance» из репозитория: # https://github.com/dotnet/skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r eval-performance/ ~/.claude/skills/eval-performance/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.