2010-02-19 9 views

Antwort

15

Beide sind unter Verwendung des Attributs [Conditional] bedingt kompiliert.

Wenn das Flag TRACE im Build definiert ist, führen Aufrufe der Klasse Trace dazu, dass eine Trace-Ausgabe geschrieben wird. Standardmäßig ist TRACE sowohl im Debug- als auch im Release-Modus definiert. Wenn das Flag nicht definiert ist, wird nichts passieren. Wenn das Flag DEBUG definiert ist, führen Aufrufe an die Klasse Debug dazu, dass die Ausgabe in den Debug-Stream geschrieben wird. Standardmäßig ist DEBUG nur im Debug-Modus definiert.

Der andere große Unterschied ist, dass mit der Ablaufverfolgung ist es einfach, die trace listeners anpassen und später entscheiden, was Sie mit der Ablaufverfolgung Ausgabe tun möchten. Es ist flexibler als die Debug-Ausgabe und eignet sich im Allgemeinen besser zum Anmelden bei einer Produktionsanwendung.

+0

Wenn also die TRACE-Flag standardmäßig definiert ist, gibt es eine Möglichkeit, um es in Release- oder Debug-Modi zu deaktivieren? – Carlo

+1

@Carlo: Sicher, es ist in den Projekteigenschaften, Erstellen Registerkarte. Es gibt zwei Kontrollkästchen, eines mit der Bezeichnung "DEBUG-Konstante definieren" und ein anderes mit der Angabe "TRACE-Konstante definieren". Diese entsprechen dem Verhalten der 'Debug'- und' Trace'-Klassen und ihrer entsprechenden 'Write'-Methoden. – Aaronaught

+0

Großartig! Danke, tolle Antwort! – Carlo

2

Der Unterschied liegt im Freigabemodus.

Debug.Write wird nicht in den Code kompiliert, wenn das DEBUG-Symbol nicht definiert ist, d. H. Im Freigabemodus kompiliert wird.

Trace.Write wird jedoch sowohl im Debug-Modus als auch im Release-Modus kompiliert.

4

DEBUG: DEBUG settings

RELEASE: RELEASE settings

Wie Sie die TRACE Konstante sehen in beiden Konfigurationen standardmäßig aktiviert ist

Verwandte Themen