我正在使用一个库,当我做一个certion时会尝试做Debug.Assert,无论如何都要阻止它使用Debug.Assert?
答案 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
element和DefaultTraceListener.AssertUiEnabled Property。