Не проверено:
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'
Я использую ключ командной строки / 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 (надеюсь, один в котором уже загружена пользовательская задача).
Удачи!
Вы также можете взглянуть на отличное коммерческое приложение (с 14-дневной пробной версией) MSBuild Sidekick в Attrice Corp для отладки вашего сценария MSBuild.
Что ж, если вы используете специальные задачи, вы можете использовать этот подход: Как: отлаживать пользовательскую задачу MSBuild с помощью Visual Studio