使用msbuild v15.0调试msbuild自定义任务

时间:2018-11-21 19:26:03

标签: msbuild .net-core

Microsoft's instructions for enabling debugging of MSBuild tasks似乎不再起作用。我无法msbuild /?来显示/debug开关,而当我尝试dotnet publish /debug时,它抱怨/debug不是有效的开关。

还有什么方法可以调试MSBuild任务?

1 个答案:

答案 0 :(得分:1)

msbuild的/debug功能已从MSBuild 15的公共内部版本及其代码has later been removed entirely中删除。

要“调试”构建目标/ msbuild文件中的逻辑,最好的选择是使用-bl参数创建二进制日志,并使用MSBuild Structured Log Viewer检查二进制日志。它显示了任务调用的所有输入/输出以及Msbuild运行期间发生的所有步骤。

调试自定义任务(例如C#代码)非常困难。这将涉及循环+休眠直到调试构建Debugger.IsAttached为真(然后在Visual Studio中附加到进程)或调用Debugger.Launch()(仅在.NET Framework而不是.NET Core MSBuild上)。 / p>

我建议将实际的任务类与逻辑实现分开,以允许您对逻辑进行单元测试。这样就无需在运行期间对其进行调试。

您可以在NuGet's PackTask及其PackTaskLogic class中看到调试器逻辑和分离的示例。