[英]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.