停止Debug.Assert?

时间:2011-05-23 19:45:55

标签: c# debugging

我正在使用一个库,当我做一个certion时会尝试做Debug.Assert,无论如何都要阻止它使用Debug.Assert?

4 个答案:

答案 0 :(得分:10)

如果你可以重新编译库,那么Marc是正确的;只需重新编译它而不定义DEBUG,所有断言都将消失。

如果你不能这样做,因为假设你没有图书馆的源代码,那么你可以让你的程序清除Trace Listeners。当断言发射时,它仍然会发射,但它什么都不做。 (当一个断言触发时,它只是检查以查看哪些跟踪侦听器已注册,并通知它们有关断言。没有听众意味着没有任何反应。)

在这种情况下,您可以考虑使用自己的客户跟踪侦听器替换默认跟踪侦听器,这样可以将断言记录到文件中。这样你就可以查看日志,看看在调试版本的库的“正常”执行中会弹出哪些断言。

答案 1 :(得分:8)

如果在没有定义DEBUG符号的情况下编译它,则不会编译对Debug.Assert的调用(方法用[Conditional("DEBUG")]定义)

答案 2 :(得分:0)

您使用的是二进制文件还是有库源?在前一种情况下,我建议您联系您的供应商,询问他们为什么发布了Debug构建,并让他们知道Assert,这是他们代码中的一个错误(如果代码按预期执行,断言就不会发生断言,即使在例外情况。)

答案 3 :(得分:0)

您可以将以下部分添加到app.config文件中,该文件禁止中断[{1}}:

Debug.Assert(false)

有关详细信息,请参阅assert elementDefaultTraceListener.AssertUiEnabled Property