C# 如何在VisualStudio2008/2010中捕获和保存我的解决方案项目的编译时和运行时错误

C# 如何在VisualStudio2008/2010中捕获和保存我的解决方案项目的编译时和运行时错误,c#,visual-studio,runtime,compile-time,C#,Visual Studio,Runtime,Compile Time,我目前正试图找到一种方法,来保存visual studio解决方案资源管理器中的项目/解决方案/网站可能抛出的编译时和运行时错误(在数据库表中) 提前谢谢你的帮助 更新:现在我只想记录C语言的错误 我正在拼命寻找一个方法或解决方案来实现这一点…任何帮助将深表感谢 NiK.编译时错误保存在html构建日志中,请检查输出窗口中的链接。放进数据库应该不会太难。确实使用这些信息的软件是CruiseControl.Net,因此您可能可以通过查看它们的代码来学习 对于运行时错误,无法回答。首先,不清楚你在问

我目前正试图找到一种方法,来保存visual studio解决方案资源管理器中的项目/解决方案/网站可能抛出的编译时和运行时错误(在数据库表中)

提前谢谢你的帮助

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

我正在拼命寻找一个方法或解决方案来实现这一点…任何帮助将深表感谢


NiK.

编译时错误保存在html构建日志中,请检查输出窗口中的链接。放进数据库应该不会太难。确实使用这些信息的软件是CruiseControl.Net,因此您可能可以通过查看它们的代码来学习

对于运行时错误,无法回答。首先,不清楚你在问什么。“运行时错误”是指异常(如被零除)?第二,在VS中支持的不同语言也有很大的不同,例如.NET语言和直C++。p>
更新:由于您是在.NET平台上,我建议您使用一个try/catch块来封装主函数,该块捕获所有抛出的错误,并将从该错误中获得的所有信息记录到数据库中(例如堆栈跟踪、异常类型,可能是一个小型转储)。当然,这对于捕获或吞咽的错误是不起作用的。如果您还想记录这些(无论出于何种原因),您必须进行一些更聪明的源代码转换,例如使用反射。一个例子是将日志添加到基类异常的构造函数中。

我的建议是研究开发visual studio的扩展,类似于Jetbrain的Resharper。VisualStudio为与IDE本身交互提供了丰富的api。如果在visual studio之外使用命令行生成,则可能需要将输出通过管道传输到文件并对其进行解析

以下是一些链接,帮助您开始开发扩展/外接程序:

这里有一个与错误列表集成的视频链接:

运行时错误可能更容易,因为您可以处理appdomain异常事件。您可以将处理程序连接到此事件并记录异常


对于已处理的异常,有两种技术。Microsoft有一个可以使用的异常处理块,或者您可以创建一个在整个应用程序中使用的自定义异常类型。

听起来您希望在网站中使用此异常处理块。您可以创建一个全局类(Global.asax.vb),然后处理应用程序错误事件中的错误。这是处理任何未处理的异常的地方(我有vb示例):

tempException将保存未处理的异常,您可以将其存储在数据库中,或通过电子邮件发送给其他人。你的选择


通过处理应用程序事件中的_unhandledException事件,可以在winform应用程序中执行类似的操作。

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


如果你能提供更多关于你想用它做什么的信息,也许我们可以提供其他的解决方案。例如,您需要从VisualStudio内部记录错误,还是有足够的外部工具记录这些错误?

< P>只有C++编译器执行构建日志。C#没有。您必须选择插件/扩展路径(在这种情况下,使用Dave Ferguson的建议开始),或者可以使用命令行编译(csc.exe)并将输出传输到文件(csc.exe/options>>log.txt),并对其进行解析。

@El…我认为,即使您在VS中处理不同的编程语言,但在生成成功后,当您的应用程序/进程/项目运行时,也会抛出运行时错误。例如,假设您有一条语句int i=x/y,y是从外部组件动态传递的值。现在由于某种原因,如果外部组件为y发送一个null,那么应用程序就会抛出一个错误,这就是所谓的运行时错误,并且我相信概念/理论也会对其他语言也是一样的。概念/理论当然,在C++的情况下,实现是另一回事。请考虑在VisualStudio中完全关闭异常的事实。但这是学术性的,因为您是在.NET平台上。究竟为什么要将编译错误保存到数据库中?改为修复它们。@Hans…我认为我足够好来修复错误…我发布此问题是为了寻找答案,而不是听到ppl询问原因,并且根据我的要求,我需要记录这些错误…请仅在您认为您了解一些情况时才回复问题…抱歉,如果您有点粗鲁。。。感谢您,就运行时而言,请查看ELMAH之类的内容,或者按照建议挂接到应用程序错误事件中。
    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