#wenn nicht in c # debuggt?

125

Ich habe die Zeile im VB-Code:

#if Not Debug

was muss ich konvertieren, und ich sehe es nicht in c #?

Gibt es etwas Äquivalentes dazu oder gibt es eine Problemumgehung?

user278618
quelle

Antworten:

237

Sie müssten verwenden:

#if !DEBUG
    // Your code here
#endif

Oder wenn Ihr Symbol tatsächlich ist Debug

#if !Debug
    // Your code here
#endif

Aus der Dokumentation können Sie effektiv DEBUGals Boolescher Wert behandeln. So können Sie komplexe Tests durchführen wie:

#if !DEBUG || (DEBUG && SOMETHING)
CodeNaked
quelle
15

Nur damit Sie mit den #ifVorgängen hier vertraut sind, handelt es sich um einen Vorverarbeitungsausdruck und DEBUGein bedingtes Kompilierungssymbol. Hier ist ein MSDN-Artikel für eine ausführlichere Erklärung.

In der Debug- Konfiguration aktiviert Visual Studio standardmäßig die Option DEBUG-Konstante definieren unter den Build-Eigenschaften des Projekts. Dies gilt sowohl für C # als auch für VB.NET. Wenn Sie verrückt werden möchten, können Sie neue Build-Konfigurationen definieren und Ihre eigenen bedingten Kompilierungssymbole definieren. Das typische Beispiel, wenn Sie dies sehen, ist:

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif
Aaron Daniels
quelle
9

Nur für den Fall, dass es jemand anderem hilft, hier ist meine Antwort.

Das würde nicht richtig funktionieren:

#if !DEBUG
     // My stuff here
#endif

Aber das hat funktioniert:

#if (DEBUG == false)
     // My stuff here
#endif
Vaccano
quelle
3
Könnte an dem Tag richtig gewesen sein, an dem dies veröffentlicht wurde, aber zumindest für VS 2015! DEBUG funktioniert wie erwartet
Ole Albers
5

Ich denke so etwas wird funktionieren

 #if (DEBUG)
//Something
#else
//Something
#endif
KhanZeeshan
quelle
5
Nur die Klammern zu beachten, ist für diese bedingten #ifAnweisungen nicht erforderlich . Es kann geschrieben werden#if DEBUG
atconway
0
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }
Luiz Flavio Cavalcanti da Silv
quelle
5
Dies ist eine schlechte Antwort, da die Laufzeitlogik verwendet wird, um zu handhaben, was zur Kompilierungszeit getan werden könnte.
Antiduh
Entwurfszeit T4-Vorlagen und dergleichen benötigen von Zeit zu Zeit solche Dinge.
StingyJack