繁体   English   中英

如何调试(最好在IDE中)MSBuild脚本?

[英]How can I debug (preferably in an IDE) an MSBuild script?

作为我们持续集成过程的一部分,我们非常广泛地使用MSBuild,虽然它非常强大,我们几乎可以在其中完成所有构建,测试和部署(利用一些自定义任务) - 我们发现使用标签进行调试是一种痛苦,并不能总是为我们提供足够的信息。

我发现: http//www.wintellect.com/CS/blogs/jrobbins/archive/2007/12/03/msbuild-debuggers.aspx ,但遗憾的是该项目似乎已从Codeplex中消失。

有没有人知道是否有类似可用的东西或是否有其他方法/技术可以使用?

谢谢。

我使用/v:diagnostic命令行开关。 MSBuild吐出一些非常详细的输出。 您还可以使用/fl[n]命令行开关将详细输出吐出到日志文件而不是控制台,然后使用/flp[n] flp /flp[n] (filelogparameter)开关指定详细级别,例如/flp:Verbosity=diagnostic;LogFile=latest_diagnostic.log

您必须从一开始就设计构建脚本,以便更轻松地进行故障排除。 做的事情如下:

使每个目标尽可能精细,这样您就可以单独调用每个目标。 这有助于使调试过程更快。

确保您的任务继承自Microsoft.Build.Utilities.Task类。 它公开了一个具有太多日志记录功能的Log属性。 我通常谨慎使用LogMessage(MessageImportance,string,params object[]) 我的调试消息获得MessageImportance.Low的消息重要性,因此它们仅在详细模式为诊断时出现。

使用System.Diagnostics.Trace.WriteLine输出太低而无法记录的消息。 我使用DebugView来查看这些消息。

最后,尽量不要在MSBuild脚本本身做真正复杂的事情。 MSBuild擅长管理依赖项,文件列表和运行任务。 任何更复杂或更高级的东西都应该转移到用您选择的.NET语言编写的自定义任务中。 这具有使事情容易调试的额外好处。 当您在代码中获得逻辑时,可以使用System.Diagnostics.Debugger.Launch()方法,这将允许您将MSBuild附加到正在运行的Visual Studio实例中的调试器(希望已经具有您的自定义任务的那个)加载)。

祝好运!

值得一看的还有VS 2010中的无证调试器

如果您使用的是MSBuild 4.0或更高版本,则可以在Visual Studio中单步执行MSBuild脚本。

这是一个简单的注册表更改,然后运行MSBuild时的/debug开关。

请参阅此处获取完整的演练: http//blogs.msdn.com/b/visualstudio/archive/2010/07/06/debugging-msbuild-script-with-visual-studio.aspx

您还可以查看Attrice Corp的优秀商业应用程序(14天试用版) MSBuild Sidekick来调试您的MSBuild脚本。

好吧,如果你正在使用自定义任务,你可以使用这种方法: 如何:使用Visual Studio调试自定义MSBuild任务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM