Как отладить файл проекта в MSBuild 12.0/VS2013?

Трассировка проекта была простой в MSBuild 4.0/VS2010, все, что вам нужно было сделать, - это установить раздел реестра, который включил параметр командной строки msbuild/debug. Отладчик будет запускаться и разбиваться в начале файла проекта.

MSBuild 12 представляет новую переменную среды для этого. В командной строке установите MSBUILDDEBUGONSTART = 1, а затем запустите MSBuild (без командной строки). Это запускает отладчик, но не разбивает. Проект просто заканчивается с открытием VS.

Мне не хватает настроек? Или эта функция (недокументированная) была удалена? Я смог по крайней мере заставить отладчик останавливаться жестким кодированием в отладочном перерыве, но это не помогает мне отслеживать файл проекта.

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         InitialTargets="Init">

  <UsingTask TaskName="LaunchDebugger"
             TaskFactory="Microsoft.Build.Tasks.CodeTaskFactory"
             AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll">
    <ParameterGroup />
    <Task>
      <Using Namespace="System" />
      <Code Type="Fragment" Language="cs">
        <![CDATA[
          System.Console.WriteLine("Launching debugger...");
          System.Diagnostics.Debugger.Launch();
        ]]>
      </Code>
    </Task>
  </UsingTask>

  <UsingTask TaskName="DebugBreak"
             TaskFactory="Microsoft.Build.Tasks.CodeTaskFactory"
             AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll">
    <ParameterGroup />
    <Task>
      <Using Namespace="System" />
      <Code Type="Fragment" Language="cs">
        <![CDATA[
          System.Diagnostics.Debugger.Break();
        ]]>
      </Code>
    </Task>
  </UsingTask>

  <Target Name="Init">
    <LaunchDebugger />
    <DebugBreak />
  </Target>

...

Ответ 1

Добавьте значение реестра DebuggerEnabled (с данными true) к следующим ключам (клавиша в сообщении блога устарела).

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\12.0 (64-битные системы) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\12.0 (32-разрядные системы или если каким-то образом выполняется 64-разрядная версия MSBuild)

См. также: