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

tac*_*cos 3 msbuild .net-core

Microsoft 关于启用 MSBuild 任务调试的说明似乎不再起作用。我无法msbuild /?显示/debug开关,当我尝试时dotnet publish /debug它抱怨这/debug不是一个有效的开关。

有没有办法再调试 MSBuild 任务?

Mar*_*ich 5

msbuild 的功能/debug已从 MSBuild 15 的公共版本中删除,并且其代码后来也被完全删除

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

调试自定义任务(例如 C# 代码)非常困难。它将涉及循环+睡眠,直到Debugger.IsAttached调试版本为 true(然后附加到 Visual Studio 中的进程)或调用Debugger.Launch()(仅在 .NET Framework 上,而不是 .NET Core MSBuild)。

我建议将实际的任务类与逻辑实现分开,以便您对逻辑进行单元测试。这应该消除在运行期间调试它的需要。

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