如何在Visual Studio 2008/2010中捕获和保存我的解决方案项目的编译时和运行时错误
本文关键字:解决方案 我的 保存 项目 运行时错误 编译 Visual Studio 2008 2010 | 更新日期: 2023-09-27 17:50:14
我目前正试图找出一种方法,我如何可能节省编译时间和运行时错误(在数据库表),项目/解决方案/网站在我的visual studio解决方案资源管理器可能会抛出。
提前感谢您的帮助。
Update:目前我只想记录c#语言的错误。
我正在拼命寻找一种方法或解决方案来实现这个…如有任何帮助,我将不胜感激。
尼克。
编译时错误保存在html buildlog中,查看输出窗口中的链接。应该不会太难放到数据库中。CruiseControl就是一个使用这些信息的软件。所以你可以从他们的代码中学习。
对于运行时错误,无法回答。首先,我不清楚你在问什么。通过"运行时错误",您是指异常(例如除以零)吗?其次,这在VS中支持的不同语言之间也有很大的不同,例如。net语言和直接的c++。
更新:因为你是在。net平台上,我建议你要么包装你的主函数与一个try/catch块捕获所有抛出的错误,只是记录所有的信息,你可以从该错误到你的数据库(如堆栈跟踪,异常类型,也许是一个minidump)。当然,这不适用于捕获或吞食的错误。如果您还想记录这些日志(无论出于什么原因),您将不得不进行一些更聪明的源转换,例如通过使用反射。例如,将日志记录添加到基类Exception的构造函数中。
我的建议是考虑开发一个visual studio的扩展,类似于Jetbrain的Resharper。Visual Studio提供了一个丰富的api,用于与IDE本身进行交互。如果您在visual studio之外使用命令行构建,则可能需要将输出管道传输到文件并对其进行解析。
这里有一些链接,可以帮助您开始开发扩展/插件:
http://msdn.microsoft.com/en-us/library/dd885119.aspx http://msdn.microsoft.com/en-us/vstudio/bb968855这里有一个集成错误列表的视频链接:
http://msdn.microsoft.com/en-us/vstudio/cc563922运行时错误可能更容易,因为有一个appdomain异常事件,你可以处理。您可以将处理程序连接到此事件并记录异常。
http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx对于处理过的异常,有几种技术。Microsoft有一个可以使用的异常处理块,或者您可以创建一个您在整个应用程序中使用的自定义异常类型。
听起来你想要一个网站。您可以创建一个Global类(Global.asax.vb),然后处理Application_Error事件中的错误。这是你处理任何未处理的异常的地方(我有vb的例子):
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Fires when an error occurs
Dim appException As System.Exception = Server.GetLastError()
Dim tempException As System.Exception = Nothing
If appException Is Nothing Then
Return
End If
tempException = appException.InnerException
tempException将保存未处理的异常,您可以将其存储在数据库中,或通过电子邮件发送给某人。你的选择。
您可以在winform应用程序中通过处理应用程序事件中的_unhandledException事件来做类似的事情。
Visual Studio项目文件是MSBuild文件,可以包含自定义编译步骤。也许可以将编译步骤替换为调用CSharp编译器并记录错误的自定义步骤。
如果你能给我们更多的信息,关于你想用它做什么,也许我们可以提供替代的解决方案。例如,您需要从visual studio内部记录错误还是使用外部工具记录这些错误就足够了?
只有c++编译器才有构建日志。c#没有。你将不得不走插件/扩展路线(在这种情况下,使用Dave Ferguson的建议开始),或者你可以使用命令行编译(csc.exe)并将输出管道到文件(csc.exe/options>> log.txt),并解析它。