Microsoft's instructions for enabling debugging of MSBuild tasks似乎不再起作用。我无法msbuild /?
来显示/debug
开关,而当我尝试dotnet publish /debug
时,它抱怨/debug
不是有效的开关。
还有什么方法可以调试MSBuild任务?
答案 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中看到调试器逻辑和分离的示例。