Но выход есть! Скрипт MsBuild можно отлаживать, ставить breakpoints и смотреть значения переменных. Приведу ссылку на исходную статью Debugging MSBuild script with Visual Studio а тут опишу действия на примере Visual Studio 2015 и некоторые особенности.
Сборку и отладку придется запускать через командную строку msbuild.exe используя опцию /debug, но изначально данная функция не доступна, поэтому при попытке воспользоваться ключом будет ошибка:
D:\!Blog\DebugFeatures\DebugFeatures>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /debug DebugFeatures.csproj
Microsoft (R) Build Engine version 4.6.1055.0
[Microsoft .NET Framework, version 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.
MSBUILD : error MSB1001: Unknown switch.
Switch: /debug
For switch syntax, type "MSBuild /help"
Поэтому потребуется:
- Сначала нужно добавить в ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0 значение DebuggerEnabled = true. На компьютере могут стаять две версии .NET Framework -
под x64 и x86 поэтому для обоих свои ветки реестра. В статье выше
указан путь только к одной ветке, поэтому я приведу текст написанного
мной скрипта, который добавит это значение в оба места.
SET FrameworkDir=%windir%\Microsoft.NET\Framework SET FrameworkDir64=%windir%\Microsoft.NET\Framework64 SET Cmd32Exe=%windir%\System32\cmd.exe SET Cmd64Exe=%windir%\SysWOW64\cmd64.exe IF EXIST %FrameworkDir% ( start %Cmd32Exe% /c "reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0" /v DebuggerEnabled /d true" ) IF EXIST %FrameworkDir64% ( start %Cmd64Exe% /c "reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\4.0" /v DebuggerEnabled /d true" ) Для запуска скопируйте в блокнот, сохраните как AnyName.bat, затем запустите.
- Затем идём в студию, выбираем проект и в контекстном меню выбираем пункт "Unload Project", проект должен стать "Недоступным":
- Далее для запуска отладчика пишем в командной строке "Путь\msbuild.exe" /debug "Путь\MyProject.csproj", запускаем и должны увидеть:
- Стоит так же учитывать номер Target Framework вашего проекта и указывать верную директорию C:\Windows\Microsoft.NET\Framework\XXXXXXXX\msbuild.exe, иначе будьте готовы к тому, что в студии всё будет собираться, а из командной строки нет. Если версия Framework понятна, то советую сначала убедиться, что в студии и через найденный msbuild.exe ошибок не возникает при сборке.
- В диалоговом окне выбора отладчика выбираем либо новый экземпляр студии, либо уже запущенный, и вуалям! Можем использовать F10 и breakpoints:
- В одном из проектов писалась встроенная Task для получения ChangeSet номера папки с проектом из TFS и последующая подстановка в версию файла. Тем самым тестировщик каждую сборку имел правильную версию файлов.
Вы спросили, почему тестировщик этим занимается? Дело в том, что по нормальному этим занимается какой то Build Service, но такого не было и сборка и обновление делалось вручную. - Имелась утилита собирающая Msbuild скрипт, который наполнялся и создавал ClickOnce приложение. Отладка его сценариев таким образом здорово мне помогло.
Комментариев нет:
Отправить комментарий