Debug.Assert()已停止在我的项目中工作
出于某种原因,下面的代码行在我的ASP.NET MVC项目中什么也不做:
System.Diagnostics.Debug.Assert(false);
我已经三重检查了我正在使用Debug配置,并在Debug配置设置中选中了“Define Debug constant”。
我的单元测试项目也出现同样的问题。
实现我自己的断言方法似乎微不足道,但有点尴尬。 任何有关如何解决这个问题的提示将不胜感激。
编辑:我在我的项目中使用了几个第三方模块。 这可能是由引用在发布模式下编译的模块引起的吗?
ASP.Net声明显示在VS控制台中,而您的网页通过VisualStudio显示。 它不会中断该线程以显示一个MsgBox或像编程语言一样中断断言行。
古代的问题,但如果你没有定义默认监听器,它将不会像往常一样显示消息对话框。 我还没有确认它是否真的发生了火灾并被吃掉(我怀疑是这种情况),还是根本没有发火。
但无论如何它不会显示对话框。
来自DefaultTraceListener的文档
Assert和Fail方法调用的消息框的显示取决于DefaultTraceListener的存在。 如果DefaultTraceListener不在Listeners集合中,则不显示消息框。
可以通过元素,元素或通过调用Listeners属性(System.Diagnostics.Trace.Listeners.Clear())上的Clear方法来删除DefaultTraceListener。
你可以通过使用如下代码来检查你的监听器并获取类型:
var listeners = new TraceListener[Debug.Listeners.Count];
Debug.Listeners.CopyTo(listeners, 0);
foreach (var listener in listeners) {
Debug.WriteLine("Name : {0} of type : {1}", listener.Name, listener.GetType());
}
如果你没有一个叫做“Default”的话, Debug.Assert
将会自动失败。
就配置而言,假设名为Default的侦听器可用,这将工作:
<system.diagnostics>
<trace autoflush="false">
<listeners>
</listeners>
</trace>
</system.diagnostics>
假设名为Default的侦听器可用,这将工作:
<system.diagnostics>
<trace autoflush="false">
<listeners>
<add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/>
</listeners>
</trace>
</system.diagnostics>
这将在我们明确定义我们的默认值时起作用:
<system.diagnostics>
<trace autoflush="false">
<listeners>
<remove name="Default" />
<add name="Default" type="System.Diagnostics.DefaultTraceListener" />
<add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/>
</listeners>
</trace>
</system.diagnostics>
这WONT工作:
<system.diagnostics>
<trace autoflush="false">
<listeners>
<remove name="Default" />
<add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/>
</listeners>
</trace>
</system.diagnostics>
如果您的web.config中没有诊断部分,则默认值可能会被某些VS扩展等删除或重写,因此添加此部分应该使其恢复到预期行为。
既然你正在运行ASP.NET MVC,那么你的web.config中是否会有一个debug = false导致问题?
链接地址: http://www.djcxy.com/p/27953.html上一篇: Debug.Assert() has stopped working in my project
下一篇: Compiler warnings with MySQL++ with release configuration