In allen Beispielen, die ich von der # if-Compiler-Direktive gesehen habe, wird "DEBUG" verwendet. Kann ich "RELEASE" auf die gleiche Weise verwenden, um Code auszuschließen, den ich beim Kompilieren im Debug-Modus nicht ausführen möchte? Der Code, den ich mit diesem Block umgeben möchte, sendet eine Reihe von E-Mails, und ich möchte diese beim Testen nicht versehentlich versenden.
Nein, wird es nicht, es sei denn, Sie machen etwas Arbeit.
Der wichtige Teil hier ist, was DEBUG wirklich ist, und es ist eine Art Konstante, mit der der Compiler prüfen kann.
Wenn Sie die Projekteigenschaften überprüfen, finden Sie auf der Registerkarte Erstellen drei Elemente:
Es gibt weder ein solches Kontrollkästchen noch eine vordefinierte Konstante/Symbol mit dem Namen RELEASE.
Sie können diesen Namen jedoch problemlos in das Textfeld Bedingte Kompilierungssymbole einfügen. Stellen Sie jedoch sicher, dass Sie die Projektkonfiguration auf den Freigabemodus setzen, da diese Einstellungen für jede Konfiguration gelten.
Wenn Sie also nichts in das Textfeld einfügen, wird #if RELEASE
unter keiner Konfiguration Code erzeugen.
RELEASE
ist nicht definiert, kann aber verwendet werden
#if (!DEBUG)
...
#endif
Nee.
In der Debug-Konfiguration gibt es eine Konstante DEBUG
(automatisch von Visual Studio definiert), während für den Freigabemodus keine solche Konstante definiert ist. Überprüfen Sie Ihre Projekteinstellungen unter Build.
Die Auswahl von [Define DEBUG] unter Project -> Build ist wie das Einfügen von #define DEBUG am Anfang jeder Datei.
Wenn Sie eine RELEASE-Konstante für die Release-Konfiguration definieren möchten, gehen Sie zu:
Bei meiner VS-Installation (VS 2008) funktioniert #if RELEASE
nicht. Sie können jedoch nur #if !DEBUG
verwenden.
Beispiel:
#if !DEBUG
SendTediousEmail()
#endif
Ich habe das noch nie gesehen ... aber ich habe gesehen:
#if (DEBUG == FALSE)
und
#if (!DEBUG)
Diese Arbeit für dich?
Sie können #if(!DEBUG)
für diese Zwecke verwenden.
"Pop Catalin" hat es richtig gemacht. Die Steuerung der Definition anhand der Art des Builds bietet viel Flexibilität. Beispielsweise können Sie eine Konfiguration "DEBUG", "DEMO" und "RELEASE" in derselben Lösung haben. Dies vermeidet die Notwendigkeit einer doppelten Programmierung mit zwei verschiedenen Lösungen.
Ja #if RELEASE
oder #if (RELEASE)
funktioniert genauso wie #if DEBUG
, wenn das RELEASE Conditional-Kompilierungssymbol definiert ist.
Folgendes stammt aus dem "Pop Catalin" -Post: Wenn Sie eine RELEASE-Konstante für die Release-Konfiguration definieren möchten, gehen Sie zu: * Projekt Eigenschaften -> Build * Wählen Sie den Freigabemodus * In Bedingte Kompilierungssymbole Textfeld geben Sie ein: RELEASE
Ich weiß, dass dies eine alte Frage ist, aber es wäre erwähnenswert, dass Sie eigene Konfigurationen außerhalb von DEBUG und RELEASE erstellen können, beispielsweise TEST oder UAT.
Wenn Sie dann auf der Registerkarte "Erstellen" der Projekteigenschaften-Seite die "Bedingte Kompilierungssymbole" beispielsweise auf TEST setzen, können Sie ein Konstrukt wie verwenden
#if (DEBUG || TEST )
//Code that will not be executed in RELEASE or UAT
#endif
Sie können dieses Konstrukt aus bestimmten Gründen verwenden, z. B. bei Bedarf verschiedene Clients oder sogar ganze Webmethoden. Wir haben dies auch in der Vergangenheit verwendet, wo einige Befehle Probleme mit bestimmter Hardware verursacht haben. Daher haben wir eine Konfiguration für eine App, wenn sie auf Hardware X bereitgestellt wird.
Sie können eigene bedingte Symbole für die Kompilierzeit erstellen (beliebiger Name). Gehen Sie zum Dialogfeld "Dialogfeld" "Projekt", das sich im Feld "Projekteigenschaften" befindet. Menüoption .__: Projekt -> [Projektname] Eigenschaften ..
Sie können sie auch "oben in der C # -Codedatei" definieren. Mögen:
#define RELEASE
// or
#undef RELEASE
sie können das Symbol in einer # if-Anweisung verwenden:
#if RELEASE
// code ...
#Elif …
// code ...
#endif
// or
#if !RELEASE
// code ...
#endif