我实现了一个自定义的TraceListener
,它既记录发送到方法Write
的消息,又输出到Win32跟踪,使用Win32 API函数OutputDebugString
。当我的应用程序使用System.Diagnostics.Debug.Write
或System.Diagnostics.Trace.Write
时,消息将由跟踪侦听器正确处理。
然而,如果我的应用程序运行到一个断言,如System.Diagnostics.Debug.Assert
,我想拦截发送到调试输出的内容。不知何故,不会使用assert生成的消息调用跟踪侦听器。这可能吗?或者我必须提供我自己的Assert
实现才能使其工作?
您是否在发布模式下构建?调试。Assert为DEBUG符号定义了ConditionalAttribute,以便编译器在Release模式下删除调用。
调试。Assert调用跟踪侦听器上的Fail方法。这个实现正确吗?如果你没有覆盖它,那么它默认调用WriteLine,并加上"Fail: "