Производительность 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
Что делает навык
Навык предназначен для диагностики и устранения узких мест в фазе оценки (evaluation) проектов MSBuild, которая происходит до запуска целевых задач. Он помогает выявить причины медленного старта сборки, такие как затратные glob-паттерны, глубокие цепочки импорта или тяжелые вычисления в свойствах.
Когда применять
- Медленный запуск сборки, вызванный длительной фазой оценки, а не компиляцией.
- Высокое время оценки, зафиксированное в binlog или отчете о производительности.
- Наличие затратных glob-паттернов, обходящих большие директории (node_modules, .git, bin/obj).
- Глубокие цепочки импорта (>20 уровней) или предобработанный вывод >10K строк.
- Использование функций свойств с файловым вводом-выводом ($([System.IO.File]::ReadAllText(...))).
Как работает
- Подтвердить проблему с помощью измерений: использовать binlog MCP (инструменты evaluations, imports, properties) или текстовый лог (grep 'Evaluation started/finished').
- Проверить размер предобработанного вывода командой dotnet msbuild -pp:full.xml; объем >10K строк указывает на тяжелую оценку.
- Проверить время оценки через /clp:PerformanceSummary и убедиться, что оценка происходит один раз на проект/TFM.
- Анализировать глобальные свойства и цепочки импорта для выявления множественных оценок или избыточных импортов.
- Рекомендовать целевые изменения: использование <DefaultItemExcludes> для исключения больших директорий, сужение путей в glob или оптимизацию импортов.
- Избегать отключения SDK-значений по умолчанию (EnableDefaultItems) без доказательств необходимости; предпочитать минимальные изменения.
Примеры запросов агенту
Что понадобится
- Инструмент binlog MCP (Microsoft.AITools.BinlogMcp) для анализа производительности.
- Доступ к .binlog файлам или возможности запуска сборки с флагами /pp и /clp:PerformanceSummary.
- Наличие измерений времени оценки (binlog или логи), так как навык требует подтверждения проблемы цифрами.
Описание составлено по SKILL.md навыка, сверено 06.10.2026.
Как подключить
SKILL.md к навыкам ассистентаНавык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.