Переопределение унаследованных задач в MSBuild - PullRequest
2 голосов
/ 15 июня 2011

У меня есть унаследованный скрипт MSBuild, который вызывает цели, которые мне запрещено изменять. Однако некоторые из этих целей вызывают методы, которые в настоящее время слишком многословны в окне вывода - например, задача <Copy> используется настолько, что ее вывод выводит любое другое соответствующее сообщение.

Поскольку у меня нет доступа к цели, вызывающей <Copy>, я не могу переключить ее на что-то менее подробное. Я играл с переключателем /verbosity, но minimal дает мне слишком мало выхода, а normal дает мне слишком много.

Есть ли другой способ повлиять на многословность, в частности, <Copy> или MSBuild в целом?

1 Ответ

1 голос
/ 15 июня 2011

Вы можете создать свой собственный регистратор. Он немного сложен, но в основном позволяет точно настроить, какие сообщения вы хотите видеть. Проще всего было бы переопределить регистратор по умолчанию.

Еще один более простой вариант - переопределить задачу копирования. Создайте свою собственную пользовательскую задачу с именем «Копировать» и обратитесь к ней с помощью объявления UsingTask. Это объявление должно появиться первым, я думаю (не могу вспомнить, если переопределение задачи - первый-один-побед или последний-один-побед). Опять же, вы можете создать подкласс задачи копирования по умолчанию в сборке MSBuild и переопределить Execute или просто свернуть свою собственную. В задаче вы можете настроить уровень многословности, связанный с различными сообщениями, вызвав Log.LogMessage и указав уровень каждого сообщения, чтобы вы могли контролировать, с какой многословностью командной строки они будут отображаться.

...