如何在MSBuild 12.0 / VS2013中调试项目文件?

时间:2014-09-27 21:19:59

标签: debugging visual-studio-2013 msbuild msbuild-4.0

Tracing a project was easy in 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 个答案:

答案 0 :(得分:6)

DebuggerEnabled注册表值(包含数据true)添加到以下密钥中(博客文章中的密钥已过期)。

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\12.0(64位系统) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\12.0(32位系统,或 如果以某种方式运行MSBuild 64位)

另见: