2016-02-16 89 views
0

我有一些自定義的構建dll庫,我自己構建它們。很顯然,我有一些錯誤在我的代碼處理,我拋出自定義異常防止在例外情況下顯示dll源代碼

If(Error) 
    throw new Exception("Something went wrong!"); 

的問題是,當應用程序使用的庫和我已經定義是拋出一個異常,Visual Studio中顯示的dll庫的源代碼在拋出異常的時候。

有沒有辦法阻止源代碼顯示visual studio顯示應用程序本身的中斷點,即被調用的方法會導致此異常?

例: 如果System.File.WriteAllText拋出異常的代碼不顯示的System.IO.dll源代碼灑在自己的代碼異常

+0

當拋出異常時不要中斷(在異常/調試設置中的某處)......不知道你到底想要防止什麼。 –

+0

它是顯示你的源代碼還是顯示反編譯的代碼?即局部變量名稱和註釋是否保留? –

+0

非常重要的是它以這種方式工作,顯示你真的出錯了。奇怪你不想知道。只需從項目中刪除庫並添加對DLL的發佈版本的引用。其剝離的PDB文件確保調試器無法再找到源代碼,並被迫顯示調用者的代碼。使用[屬性]也是一種選擇,但這太枯燥了。 –

回答

0

Hans Passant建議。我必須使用該版本的dll來隱藏源代碼才能顯示。

0

您可以使用DebuggerHiddenAttributeDebuggerStepThroughAttribute在方法/類/屬性,它包含你不希望發生異常的代碼。

+0

我想要例外,所以我寫了它。例如如果'System.File.WriteAllText'拋出異常代碼不顯示'System.IO.dll'的源代碼它引發我自己的代碼的異常 –

0

您必須在另一個解決方案中定義DLL,並且不要在VS中打開該項目。 然後你應該引用已編譯的DLL文件並從該目錄中刪除PDB文件。

+0

以及我正在做 –

+0

@AshkanMobayenKhiabani你是刪除PDB文件? –

+0

以及我正在複製dll到我的新項目文件夾,所以那裏將沒有pdb文件 –

相關問題