簡體   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