Как посмотреть текущий «шаг» задачи, выполняемой в списке элементов с помощью специального регистратора в MSBuild? - PullRequest
3 голосов
/ 17 ноября 2010

Я заранее извиняюсь за то, что даже не знал, как правильно сформулировать то, что мне нужно, поэтому я попытаюсь объяснить это более подробно:

Мы строим процесс автоматического развертывания с использованием MSBuild.Наш установщик программного обеспечения должен быть запущен несколько раз на некоторых машинах в нашей среде, так как мы должны настроить отдельные экземпляры.Мы делаем это путем создания «списков» (если это правильный термин, переменных, таких как @ (имя)) задач, которые должны быть завершены метаданными, описывающими установку, для которой запускается, и для какогомашина, а затем езда на велосипеде через все это.Кроме того, мы закрываем и перезапускаем сервисы синхронизированным способом.

По сути, наша проблема заключается в том, что мы хотим отделить места сбоев и ограничить их конкретным экземпляром для целей нашего регистратора.Есть ли способ, которым свойства текущей задачи открываются журналу регистрации при выдаче предупреждений?В идеале (для того, чтобы это было полезно) это было бы после анализа, поэтому, если свойство имеет вид:

<Exec Command="install%(InstanceName.ShortName).bat" />

Можем ли мы посмотреть на это свойство в логгере и увидеть, что в данный момент он запускает 'installfoo.летучая мышь "?

1 Ответ

2 голосов
/ 05 января 2011

Функция, которую вы описываете, называется пакетной обработкой.Если я правильно читаю ваш вопрос, вы хотите иметь возможность регистрировать, какой пакет включен при возникновении ошибки или какого-либо другого события.

Глядя на интерфейс ILogger, я недумаю, что это можно сделать - только задача знает, какая партия предметов была передана ей.Я предполагаю, что вы хотите сделать это для нескольких различных встроенных задач, поэтому одним из обходных путей было бы обернуть задачу в цель, где вы можете регистрировать все, что захотите.Например, цель BatchedExec вызывается для каждого пакета, и вы можете записывать любую информацию, какую хотите, прежде чем вызывать задачу.Вы ставите похожие цели для каждой задачи, которую хотите запустить с пакетными аргументами.

...