In allen Beispielen, die ich für die # 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 nicht versehentlich beim Testen versenden.
277
#if !DEBUG
erfüllt die gleiche Funktion wie#if RELEASE
hätte. Alternativ#if DEBUG
dann#else
dann ,#endif
wenn es unterschiedliche Code in den Modi laufen.Antworten:
Nein, das wird es nicht, es sei denn, Sie arbeiten.
Der wichtige Teil hier ist, was DEBUG wirklich ist, und es ist eine Art Konstante, gegen die der Compiler prüfen kann.
Wenn Sie die Projekteigenschaften auf der Registerkarte Erstellen überprüfen, finden Sie drei Dinge:
Es gibt weder ein solches Kontrollkästchen noch eine vordefinierte Konstante / ein vordefiniertes Symbol mit dem Namen RELEASE.
Sie können diesen Namen jedoch problemlos in das Textfeld mit der Bezeichnung Bedingte Kompilierungssymbole einfügen. Stellen Sie jedoch sicher, dass Sie die Projektkonfiguration zuvor auf den Freigabemodus eingestellt haben, da diese Einstellungen pro Konfiguration gelten.
Wenn Sie dies also nicht zum Textfeld hinzufügen,
#if RELEASE
wird unter keiner Konfiguration Code erzeugt.quelle
RELEASE
ist nicht definiert, aber Sie können verwendenquelle
RELEASE
definiert war.Nee.
Während der Debug-Konfiguration gibt es eine
DEBUG
definierte Konstante (automatisch von Visual Studio definiert), während für den Release-Modus keine solche Konstante definiert ist. Überprüfen Sie Ihre Projekteinstellungen unter Build.Wenn Sie unter Projekt -> Erstellen die Option [DEBUG-Konstante definieren] auswählen, wird am Anfang jeder Datei #define DEBUG eingefügt.
Wenn Sie eine RELEASE-Konstante für die Release-Konfiguration definieren möchten, gehen Sie zu:
quelle
#if (RELEASE) [RequireHttps] #endif
Auf meiner VS-Installation (VS 2008)
#if RELEASE
funktioniert nicht. Sie können jedoch nur verwenden#if !DEBUG
Beispiel:
quelle
Ich habe das noch nie gesehen ... aber ich habe gesehen:
und
Diese Arbeit für dich?
quelle
!
funktioniert also nur der Operator, wie in Ihrem zweiten Beispiel.Sie können
#if(!DEBUG)
für diese Zwecke verwenden.quelle
"Pop Catalin" hat es richtig gemacht. Die Steuerung der Definition basierend auf der Art des Builds bietet ein hohes Maß an Flexibilität. Beispielsweise können Sie die Konfigurationen "DEBUG", "DEMO" und "RELEASE" in derselben Lösung haben. Dies verhindert die Notwendigkeit einer doppelten Programmierung mit zwei verschiedenen Lösungen.
Also ja
#if RELEASE
oder#if (RELEASE)
funktioniert genauso, wie#if DEBUG
wenn das Symbol RELEASE Conditional Compilation definiert ist.Folgendes stammt aus dem Beitrag "Pop Catalin": Wenn Sie eine RELEASE-Konstante für die Release-Konfiguration definieren möchten, gehen Sie zu: * Projekteigenschaften -> Erstellen * Release-Modus auswählen * Geben Sie im Textfeld Bedingte Kompilierungssymbole Folgendes ein: RELEASE
quelle
Ich weiß, dass dies eine alte Frage ist, aber es könnte erwähnenswert sein, dass Sie Ihre eigenen Konfigurationen außerhalb von DEBUG und RELEASE erstellen können, z. B. TEST oder UAT.
Wenn Sie dann auf der Registerkarte Erstellen der Projekteigenschaften-Seite die "Bedingten Kompilierungssymbole" auf TEST setzen (zum Beispiel), können Sie ein Konstrukt wie z
Sie können dieses Konstrukt aus bestimmten Gründen verwenden, z. B. für verschiedene Clients, wenn Sie dies benötigen, oder sogar für ganze Webmethoden. Wir haben dies auch in der Vergangenheit verwendet, wo einige Befehle Probleme auf bestimmter Hardware verursacht haben. Daher haben wir eine Konfiguration für eine App, wenn diese auf Hardware X bereitgestellt wird.
quelle
Sie können eigene Symbole für die bedingte Kompilierungszeit erstellen (einen beliebigen Namen). Gehen Sie zum "Dialogfeld" Projekterstellung "im Feld" Projekteigenschaften ", Menüoption: Projekt -> [Projektname] Eigenschaften ...
Sie können sie auch "oben in der C # -Codedatei" definieren. Mögen:
Sie können das Symbol in einer # if-Anweisung verwenden:
quelle
warum nicht einfach
quelle
/d:RELEASE
würde auch funktionieren. Sie können dies auch zu Symbolen für bedingte Kompilierung unter Release-Konfiguration (Registerkarte Projekteigenschaften erstellen) hinzufügen.