#if (DEBUG) VS-System.Diagnostik.Debugger.IsAttached
Was ist der Unterschied zwischen der Verwendung #if (DEBUG)
und System.Diagnostics.Debugger.IsAttached
im visual studio? Gibt es Fälle, die DEBUG
- flag gesetzt, aber kein debugger angehängt, oder in Fällen, wenn ein debugger könnte angebracht werden, wenn die DEBUG
- flag wird nicht gesetzt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
#if DEBUG
gewährleistet, dass der code nicht in der Versammlung bei allen, die in release-builds. Auch code enthalten, die von#if DEBUG
läuft die ganze Zeit in einem debug-build - nicht nur, wenn es unter einem debugger.Debugger.IsAttached
bedeutet, dass der code enthalten ist, ob debug oder release build. Und ein debugger angefügt werden kann, um builds zu.Es ist üblich, verwenden Sie beide zusammen.
#if DEBUG
ist in der Regel für Dinge wie Protokollierung oder zu reduzieren exception handling in der internen test-builds.Debugger.IsAttached
neigt dazu, nur verwendet werden, um zu entscheiden, ob zu schlucken Ausnahmen oder zeigen Ihnen für einen Programmierer eher ein Programmierer-Hilfe als alles andere.#if DEBUG
ist eine compile-time check, also der code, der es umgibt, wird nur in die Ausgabe eingeschlossen werden Montage, wenn dieDEBUG
präprozessorsymbol definiert ist.Debugger.IsAttached
ist ein Laufzeit-check, also die debugging-code wird immer noch in der assembly enthalten, die aber nur ausgeführt wird, wenn ein debugger an den Prozess angefügt ist.#if (DEBUG)
ist eine Präprozessor-Direktive, die es Ihnen ermöglicht, bedingt kompilieren von code.System.Diagnostics.Debugger.IsAttached
bietet eine Laufzeit-Wert, der angibt, ob ein debugger an den Prozess angefügt ist.IsDebuggerPresent
erkennt Muttersprache Debugger. Ob es anwendbar ist oder nicht, ist eine andere Frage.Es nichts gemeinsam hat. Sie können die debug-Version bauen. Und Sie können ausführen die Debug-build ohne einen debugger, drücken Sie Strg+F5.
Bedingte Attribute sind eine weitere option im Zusammenhang zu den oben aufgeführten. Gute Antworten zu diesem Thema auf diese Frage.
Müssen .NET-code nur ausgeführt, wenn in der debug-Konfiguration
Mit diesem code, nur versuchen, ändern Sie die build von debug zu release und Umgekehrt. Die Ausführung von/ausgeschlossen-code wird die Karte geändert in der VS automatisch als schwarz und ausgegraut bzw.