代码之家  ›  专栏  ›  技术社区  ›  tacos_tacos_tacos

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

  •  0
  • tacos_tacos_tacos  · 技术社区  · 6 年前

    Microsoft's instructions for enabling debugging of MSBuild tasks 似乎不再有效了。我不能得到 msbuild /? 展示 /debug 切换,当我尝试时 dotnet publish /debug 它抱怨说 调试 不是有效的开关。

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Martin Ullrich    6 年前

    这个 /debug 已从msbuild 15的公共生成及其代码中删除msbuild的功能 has later been removed entirely .

    要在生成目标/msbuild文件中“调试”逻辑,最好的选择是使用 -bl 使用 MSBuild Structured Log Viewer . 它向您显示任务调用的所有输入/输出,以及在msbuild运行期间发生的所有步骤。

    调试自定义任务(例如C代码)非常困难。它包括循环+睡觉直到 Debugger.IsAttached 对于调试生成(然后附加到Visual Studio中的进程)或调用 Debugger.Launch() (仅在.NET框架上,而不是.NET核心MSBuild上)。

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

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