Как я могу отладить (желательно в IDE) скрипт MSBuild?
Мы довольно широко используем MSBuild как часть нашего процесса непрерывной интеграции, и, несмотря на то, что он невероятно мощный, и мы можем выполнять практически все наши сборки, тестирование и развертывание в нем (используя некоторые пользовательские задачи) - мы обнаружили, что отладка его с использованием тегов это боль и не всегда может дать нам достаточно информации.
Я нашел: http://www.wintellect.com/CS/blogs/jrobbins/archive/2007/12/03/msbuild-debuggers.aspx, но, к сожалению, проект, похоже, исчез из Codeplex.
У кого-нибудь есть идеи, есть ли что-то похожее на это или есть другой способ / техника, которую можно использовать?
Благодарю.
5 ответов
Я использую /v:diagnostic
переключатель командной строки. MSBuild выдает довольно подробный вывод. Вы также можете плюнуть подробный вывод в файл журнала вместо консоли, используя /fl[n]
переключатель командной строки, а затем используйте /flp[n]
(filelogparameter), чтобы указать уровень детализации, например, /flp:Verbosity=diagnostic;LogFile=latest_diagnostic.log
Вы должны разработать свои сценарии сборки с самого начала, чтобы упростить устранение неполадок. Делайте такие вещи, как:
Сделайте каждую цель как можно более детализированной, чтобы вы могли вызывать каждую цель по отдельности. Это помогает значительно ускорить процесс отладки.
Убедитесь, что ваши задачи наследуются от Microsoft.Build.Utilities.Task
учебный класс. Он предоставляет свойство Log, в котором слишком много функций ведения журнала. Я обычно ошибаюсь на стороне осторожности использования LogMessage(MessageImportance,string,params object[])
, Мои отладочные сообщения получают важность сообщения MessageImportance.Low
поэтому они появляются только тогда, когда режим многословия является диагностическим.
использование System.Diagnostics.Trace.WriteLine
для вывода сообщений, которые слишком низкого уровня, чтобы войти. Я использую DebugView, чтобы посмотреть на эти сообщения.
Наконец, постарайтесь не делать действительно сложные вещи в самом скрипте MSBuild. MSBuild отлично справляется с управлением зависимостями, списками файлов и выполнением задач. Все более сложные или сложные должны быть перенесены в пользовательские задачи, написанные на выбранном вами языке.NET Это дает дополнительное преимущество, облегчая отладку. Когда у вас есть логика в коде, вы можете использовать System.Diagnostics.Debugger.Launch()
метод, который позволит вам присоединить MSBuild к отладчику в работающем экземпляре Visual Studio (возможно, в том, что ваша пользовательская задача уже загружена).
Удачи!
Стоит также взглянуть на недокументированный отладчик в VS 2010.
Вы можете пройти через MSBuild
скрипты в Visual Studio, если вы используете MSBuild 4.0
или выше.
Это простое изменение реестра, а затем /debug
переключаться при работе MSBuild
,
Смотрите здесь для полного прохождения: http://blogs.msdn.com/b/visualstudio/archive/2010/07/06/debugging-msbuild-script-with-visual-studio.aspx
Вы также можете взглянуть на отличное коммерческое приложение (с 14-дневной пробной версией) MSBuild Sidekick от Attrice Corp для отладки вашего MSBuild-скрипта.
Хорошо, если вы используете пользовательские задачи, вы можете использовать этот подход: Как: Отладка пользовательской задачи MSBuild с помощью Visual Studio