2016-09-30 1 views
0

Kann ich spezifischen Code nur ausführen, wenn ich das Programm über die Debugging-Tools von Visual Studio debugge?Code nur beim Debuggen mit Visual Studio ausführen

Wenn ich #if DEBUG oder Conditional(“DEBUG”) verwende, wird der Code immer noch beim Ausführen der .exe im Verzeichnis/Debug ausgelöst.

+1

Visual Studio auch die exe im Debug-Ordner ausgeführt wird, es misst nur einen Debugger. Der bedingte Code ist in kompiliert. – Crowcoder

+0

Sehen Sie dies für ein paar Lösungen: http://StackOverflow.com/Questions/101806/Check-If-Application-was-Started-from-within-visual-Studio – PaulF

Antwort

7

Die #if DEBUG ist für Bedingte Kompilierung, hat keine Auswirkungen auf die Ausführung zur Laufzeit.

Verwenden Sie stattdessen Debugger.IsAttached, um zur Laufzeit zu verzweigen.

0

Ok ich fand schließlich die Antwort:

if (Debugger.IsAttached) ist genau das, was ich brauchte.

+0

Dies ist nur ein Kommentar zur Antwort von Dai. – HimBromBeere

+0

ungefähr gleichzeitig. Jungs jagen Punkte. Die Antwort wurde in der nächsten Minute gepostet. – sofsntp

0

Nur um es zu verdeutlichen, sind die Anweisungen, die mit einem Hashtag beginnen, Preprozessor-Anweisungen. Diese Richtlinien sind in der Übersetzungsabteilung nicht vorhanden. daher sind diese bedingten Anweisungen in der kompilierten Datei nicht vorhanden.

EDIT Es scheint, dass dieses Ding ganze Übersetzungseinheit gilt nicht für C#

+0

Ich werde ein Pedant sein: es ist "Hash-Symbol", "Pfund-Symbol" oder "Nummernzeichen" und nicht "Hashtag". Und das Konzept der Übersetzungseinheiten gilt nicht für den C# -Compiler. – Dai

+0

@Dai Nun, ich war ein wenig informell über das "Hash-Symbol"; aber mir war der Zustand der Übersetzungseinheit für C# nicht bekannt. Danke für deinen Beitrag. –

Verwandte Themen