古い質問ですが、デフォルトのリスナーが定義されていない場合、通常どおりメッセージダイアログは表示されません。実際に発火して食べられるだけなのか(これが原因だと思います)、まったく発火しないのかは確認していません。
しかし、いずれにしてもダイアログは表示されません。
DefaultTraceListenerのドキュメントから
Assert および Fail メソッド呼び出しのメッセージ ボックスの表示は、DefaultTraceListener の存在によって異なります。DefaultTraceListener が Listeners コレクションにない場合、メッセージ ボックスは表示されません。
DefaultTraceListener は、要素、要素、または Listeners プロパティ (System.Diagnostics.Trace.Listeners.Clear()) で Clear メソッドを呼び出すことによって削除できます。
以下のようなコードを使用して、リスナーをチェックしてタイプを取得できます。
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());
}
「デフォルト」と呼ばれるものがない場合、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>
これは機能しません:
<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 拡張機能などによって削除またはオーバーライドされる可能性があるため、このセクションを追加すると、期待どおりの動作に戻るはずです。