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>
...
答案 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位)
另见: