繁体   English   中英

如何在Visual Studio 2008/2010中捕获和保存我的解决方案项目的编译时间和运行时错误

[英]How to catch and save compile time and run time errors of my solution project in Visual Studio 2008/2010

我目前正在尝试寻找一种方法,如何保存Visual Studio解决方案资源管理器中的项目/解决方案/网站可能抛出的编译时间和运行时错误(在数据库表中)。

我在这里先向您的帮助表示感谢。

更新:现在,我只想记录C#语言的错误。

我正在拼命寻找实现此目标的方法或解决方案...任何帮助将不胜感激...

NIK。

编译时错误保存在html buildlog中,请检查输出窗口中的链接。 放在数据库中应该不难。 CruiseControl.Net是一款使用此信息的软件,因此您可能可以通过查看其代码来学习。

对于运行时错误,无法回答。 首先,不清楚您要问什么。 所谓“运行时错误”,是指异常,例如被零除吗? 其次,这在VS中支持的不同语言(例如.NET语言和直接C ++)之间也有很大不同。

更新:由于您使用的是.NET平台,因此我建议您使用try / catch块包装主函数,以捕获所有引发的错误,并仅将可以从该错误中获取的所有信息记录到数据库中(例如,堆栈跟踪,异常类型,也许是小型转储)。 当然,这不适用于已捕获或吞下的错误。 如果您还想记录这些日志(无论出于何种原因),则必须进行一些更巧妙的源转换,例如通过使用反射。 一个示例是将日志记录添加到基类Exception的构造函数中。

我的建议是考虑开发视觉工作室的扩展,类似于Jetbrain的Resharper。 Visual Studio公开了用于与IDE本身进行交互的丰富API。 如果在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.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将保留未处理的异常,您可以将其存储在数据库中,或通过电子邮件将其发送给某人。 你的选择。

您可以通过处理Application事件中的_unhandledException事件在winform应用程序中执行非常相似的操作。

Visual Studio Project文件是MSBuild文件,可以包含自定义编译步骤。 也许可以用自定义步骤替换编译步骤,该自定义步骤调用CSharp编译器并记录错误。

如果您向我们提供了更多有关其用途的信息,也许我们可以提供替代解决方案。 例如,您是否需要从Visual Studio内部记录错误,还是足以让外部工具记录这些错误?

仅C ++编译器执行buildlog。 C#没有。 您将必须采用插件/扩展路径(在这种情况下,请使用Dave Ferguson的建议来开始使用),也可以使用命令行进行编译(csc.exe)并将输出通过管道传输到文件(csc.exe /选项>> log.txt),然后对其进行解析。

暂无
暂无

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

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