Создание целей
Canonical patterns for writing custom MSBuild targets. USE FOR: diagnosing and fixing custom target authoring anti-patterns; broken SDK target chains across files (e.g., Directory.Build.targets silently redefining SDK targets); targets that replace CompileDependsOn instead of extending it with $(CompileDependsOn); query targets returning stale results from Outputs vs Returns misuse; missing Inputs
Что делает навык
Skill предоставляет канонические паттерны написания пользовательских MSBuild-таргетов, основанные на структуре Microsoft.Common.CurrentVersion.targets. Он помогает диагностировать антипаттерны, такие как разрыв цепочек SDK-таргетов, неверное переопределение зависимостей или использование Outputs вместо Returns.
Когда применять
- Диагностика и исправление антипаттернов при авторстве пользовательских таргетов
- Восстановление цепочек SDK-таргетов, прерванных молчаливым переопределением в Directory.Build.targets
- Исправление таргетов, которые заменяют CompileDependsOn вместо его расширения через $(CompileDependsOn)
- Устранение проблем с запросными таргетами, возвращающими устаревшие результаты из-за неверного использования Outputs вместо Returns
- Добавление отсутствующих Inputs для корректной работы инкрементальной сборки
Как работает
- Изучить структуру цепочки из трех уровней (Before → Core → After) для основных точек входа (Build, Rebuild, Clean)
- Проверить свойство BuildDependsOn, которое делегирует выполнение списку зависимостей
- Убедиться, что пользовательские таргеты расширяют существующие списки зависимостей, а не заменяют их
- Проверить корректность использования Outputs и Returns для предотвращения возврата устаревших результатов
- Добавить недостающие Inputs для обеспечения корректной работы инкрементальной сборки
- Применить канонические паттерны из Microsoft.Common.CurrentVersion.targets для исправления найденных проблем
Примеры запросов агенту
Описание составлено по SKILL.md навыка, сверено 05.10.2026.
Как подключить
SKILL.md к навыкам ассистентаНавык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.