C# 如何使用自定义的`TraceListener'记录断言消息`
我实现了一个自定义的C# 如何使用自定义的`TraceListener'记录断言消息`,c#,logging,trace,assert,C#,Logging,Trace,Assert,我实现了一个自定义的TraceListener,它使用Win32 API函数OutputDebugString记录发送到方法Write的消息,并将它们输出到Win32跟踪。每当我的应用程序使用System.Diagnostics.Debug.Write或System.Diagnostics.Trace.Write时,跟踪侦听器都会正确处理消息 但是,如果我的应用程序遇到断言,例如System.Diagnostics.Debug.Assert,我希望截获发送到调试输出的内容。不知何故,跟踪侦听器不
TraceListener
,它使用Win32 API函数OutputDebugString
记录发送到方法Write
的消息,并将它们输出到Win32跟踪。每当我的应用程序使用System.Diagnostics.Debug.Write
或System.Diagnostics.Trace.Write
时,跟踪侦听器都会正确处理消息
但是,如果我的应用程序遇到断言,例如
System.Diagnostics.Debug.Assert
,我希望截获发送到调试输出的内容。不知何故,跟踪侦听器不会被断言生成的消息调用。这可能吗?或者我必须提供自己的Assert
实现才能工作吗?您是在发布模式下构建的吗?Assert为调试符号定义了ConditionalAttribute,以便编译器在发布模式下删除这些调用
Assert在跟踪侦听器上调用Fail方法。这是否正确实施?如果您没有覆盖它,那么它默认调用以“Fail:”开头的WriteLine。否,我正在调试环境中运行。assert显示一个警报框,并将其输出转储到附加的调试器(例如DbgView),但它似乎没有通过跟踪侦听器。你是对的,我必须重写Fail方法。请编辑您的回复以反映这一点,以便我可以接受您的回答。