Но выход есть! Скрипт 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", запускаем и должны увидеть: