Alte Frage, aber wenn Sie keinen Standard-Listener definiert haben, wird kein Nachrichtendialog wie üblich angezeigt. Ich habe nicht bestätigt, ob es tatsächlich feuert und nur gegessen wird (ich vermute, das ist der Fall) oder ob es überhaupt nicht feuert.
Aber so oder so wird es den Dialog nicht anzeigen.
Aus der Dokumentation für DefaultTraceListener
Die Anzeige des Meldungsfeld für Assert und Fail-Methode aufruft auf das Vorhandensein des Default abhängt. Wenn sich der DefaultTraceListener nicht in der Listeners-Auflistung befindet, wird die Nachricht Box nicht angezeigt.
Die Default kann durch das Element entfernt werden, die durch das Element oder durch die klare Methode auf die Zuhörer Eigenschaft ruft (System.Diagnostics.Trace.Listeners.Clear()).
können Sie Ihre Zuhörer überprüfen und die Art erhalten, indem einige Code wie unter Verwendung von:
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());
}
Wenn Sie nicht ein „Default“ genannt haben, Debug.Assert
wird stillschweigend scheitern.
Soweit Konfiguration geht, wird diese Arbeit ein Zuhörer namens Standard verfügbar ist unter der Annahme:
<system.diagnostics>
<trace autoflush="false">
<listeners>
</listeners>
</trace>
</system.diagnostics>
vorausgesetzt, dies funktionieren wird named Standard steht ein Zuhörer:
<system.diagnostics>
<trace autoflush="false">
<listeners>
<add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/>
</listeners>
</trace>
</system.diagnostics>
wie dies funktionieren wird wir definieren ausdrücklich unseren Standard:
<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>
Diese WONT Arbeit:
<system.diagnostics>
<trace autoflush="false">
<listeners>
<remove name="Default" />
<add name="bigEarsListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TracingInfo.log"/>
</listeners>
</trace>
</system.diagnostics>
Wenn Sie nicht über einen Diagnose-Abschnitt in Ihrem web.config dann dem Standard könnte durch eine VS-Erweiterung usw. entfernt oder außer Kraft gesetzt wird, bekommen, so dass dieser Abschnitt hinzugefügt werden, sollte es zu erwartenden Verhalten bringen.
Haben Sie überprüft, dass Sie die Release-Version nicht ausführen? – ChrisF
Wie wäre es, öffnen Sie Ihre DLL/EXE mit Reflector und sehen, ob die Behauptung tatsächlich im Code ist? Und wird Ihre Assembly tatsächlich von dem Ort geladen, von dem Sie denken, dass es ist? Vielleicht überprüfen Sie ein anderes Mal, dass Sie die Debug-Version verwenden. –
@ChrisF: Wie gesagt, ja. Dreimal ... :-) –