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

Debugging 如何在MSBuild 12.0/VS2013中调试项目文件?,debugging,visual-studio-2013,msbuild,msbuild-4.0,Debugging,Visual Studio 2013,Msbuild,Msbuild 4.0,,您所要做的就是设置启用msbuild/debug命令行选项的注册表项。调试器将在项目文件开始时启动并中断 MSBuild 12为此引入了一个新的环境变量。在命令提示下,设置MSBUILDDEBUGONSTART=1,然后运行MSBuild(无命令行开关)。这将启动调试器,但不会中断。该项目仅在VS打开时运行到完成 我是不是错过了一个场景?或者此(未记录)功能是否已删除?在调试中断时,我至少能够通过硬编码使调试器停止,但这无助于我跟踪项目文件 ... 将DebuggerEnabled注

,您所要做的就是设置启用msbuild/debug命令行选项的注册表项。调试器将在项目文件开始时启动并中断

MSBuild 12为此引入了一个新的环境变量。在命令提示下,设置MSBUILDDEBUGONSTART=1,然后运行MSBuild(无命令行开关)。这将启动调试器,但不会中断。该项目仅在VS打开时运行到完成

我是不是错过了一个场景?或者此(未记录)功能是否已删除?在调试中断时,我至少能够通过硬编码使调试器停止,但这无助于我跟踪项目文件






...

DebuggerEnabled
注册表值(数据为
true
)添加到以下项(博客文章中的项已过期)

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

另见:


那么,原来是同一个人告诉我们这项功能的?易卜拉欣·哈希米(Ibrahim Hashimi)或布赖恩·克雷茨勒(Brian Kretzler)说。你应该将你的问题重新命名为“调试”,使用众所周知的正确术语,而不是“追踪”,这样,如果出现答案,它就是searchable@ImaDirtyTroll你找到解决方法了吗?@stijn-没有,不幸的是。我试过,它打开并向我展示了反汇编,但不允许我查看msbuild代码或为msbuild 12.0设置任何断点,对我来说14.0不起作用。有什么新知识吗?
<?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>

...