Это логическое продолжение моего предыдущего вопроса: « Как проверить все проекты в решении по некоторым критериям? »
Мне дали довольно хороший ответ на использование CustomAfterMicrosoftCommonTargets, CustomBeforeMicrosoftCommonTargets.Они работают, поэтому я решил не останавливаться на достигнутом.
Проблема в том, что я не хочу задач на уровне машины.Это не очень хорошая идея ни для меня (это повлияет на другие сборки. Конечно, это можно сделать, но все же), ни для моих товарищей по команде (я не хочу, чтобы они что-то помещали в системные папки ...), нидля сборки сервера.Что необходимо: решение, которое будет построено с нуля из-под контроля исходного кода на чистой машине с Visual Studio или MSBuild.
Оказалось, что Custom * MicrosoftCommonTargets - это обычные свойства.
Итак, как указать это свойство?Это работает довольно хорошо, когда установить его из командной строки.Это странно, но кажется, что здесь есть немного волшебства: свойство, переданное как параметр командной строки одной сборке, транзитивно , переданное всем вложенным сборкам!
Это нормальнодля сборки сервера.Но это не будет работать со сборкой Visual Studio.И даже объявление свойства уровня решения не поможет: ни статические, ни динамические свойства не передаются во вложенные сборки.
... У меня есть хакерская идея установить переменную среды перед сборкой решения и стереть ее после.Но мне это не нравится.Есть идеи получше?