Как я могу отладить (предпочтительно в IDE) сценарий MSBuild?

Не проверено:

require 5.013002;
print "bla: ", $myvar =~ s/a/b/r, "\n";

См. perl5132delta :

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

my $old = 'cat';
my $new = $old =~ s/cat/dog/r;
# $old is 'cat' and $new is 'dog'

9
задан Kieran Benton 5 November 2009 в 11:11
поделиться

3 ответа

Я использую ключ командной строки / v: диагностический . MSBuild выдает довольно подробный вывод. Вы также можете записать подробный вывод в файл журнала вместо консоли, используя переключатель командной строки / fl [n] , а затем использовать / flp [n] (параметр журнала ), чтобы указать уровень детализации, например, /flp:Verbosity=diagnostic;LogFile=latest_diagnostic.log

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

Сделайте каждую цель как можно более детальной, чтобы вы могли вызывать каждую цель индивидуально. Это помогает значительно ускорить процесс отладки.

Убедитесь, что ваши задачи наследуются от Microsoft.Build. Класс Utilities.Task . Он предоставляет свойство журнала, в котором слишком много функций ведения журнала. Я обычно ошибаюсь из соображений осторожности, использую LogMessage (MessageImportance, string, params object []) . Мои отладочные сообщения имеют важность сообщения MessageImportance.Low , поэтому они появляются только в диагностическом режиме.

Используйте System.Diagnostics.Trace.WriteLine для вывода сообщений, которые являются слишком низкоуровневые для регистрации. Я использую DebugView для просмотра этих сообщений.

Наконец, постарайтесь не делать действительно сложных вещей в самом скрипте MSBuild. MSBuild отлично справляется с управлением зависимостями, списками файлов и выполнением задач. Все более сложные или продвинутые задачи следует перенести в специальные задачи, написанные на выбранном вами языке .NET. Это дает дополнительное преимущество, так как упрощает отладку . Когда у вас есть логика в коде, вы можете использовать метод System.Diagnostics.Debugger.Launch () , который позволит вам прикрепить MSBuild к отладчику в работающем экземпляре Visual Studio (надеюсь, один в котором уже загружена пользовательская задача).

Удачи!

12
ответ дан 4 December 2019 в 08:15
поделиться

Вы также можете взглянуть на отличное коммерческое приложение (с 14-дневной пробной версией) MSBuild Sidekick в Attrice Corp для отладки вашего сценария MSBuild.

1
ответ дан 4 December 2019 в 08:15
поделиться

Что ж, если вы используете специальные задачи, вы можете использовать этот подход: Как: отлаживать пользовательскую задачу MSBuild с помощью Visual Studio

0
ответ дан 4 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: