We wszystkich przykładach dyrektywy kompilatora #if, które widziałem, używają „DEBUG”. Czy mogę używać „RELEASE” w ten sam sposób, aby wykluczyć kod, którego nie chcę uruchamiać, gdy jest skompilowany w trybie debugowania? Kod, który chcę otoczyć tym blokiem, wysyła wiele e-maili i nie chcę ich przypadkowo wysłać podczas testowania.
277
#if !DEBUG
pełni tę samą funkcję, co#if RELEASE
miałoby. Alternatywnie,#if DEBUG
po czym#else
następnie#endif
, czy istnieje inny kod do uruchomienia w trybach.Odpowiedzi:
Nie zrobi tego, chyba że wykonasz jakąś pracę.
Ważną częścią tutaj jest to, czym naprawdę jest DEBUG, i jest to rodzaj stałej zdefiniowanej, którą kompilator może sprawdzić.
Jeśli sprawdzisz właściwości projektu, w zakładce Kompilacja znajdziesz trzy rzeczy:
Nie ma takiego pola wyboru ani predefiniowanej stałej / symbolu o nazwie RELEASE.
Możesz jednak z łatwością dodać tę nazwę do pola tekstowego oznaczonego Symbole kompilacji warunkowej, ale upewnij się, że ustawiłeś wcześniej konfigurację projektu w tryb Release, ponieważ ustawienia te dotyczą poszczególnych konfiguracji.
Zasadniczo, chyba że dodasz to do pola tekstowego,
#if RELEASE
nie wygeneruje żadnego kodu w żadnej konfiguracji.źródło
RELEASE
nie jest zdefiniowany, ale możesz użyćźródło
RELEASE
została zdefiniowana.Nie.
Podczas konfiguracji debugowania istnieje
DEBUG
zdefiniowana stała (automatycznie definiowana przez Visual Studio), podczas gdy nie ma takiej stałej zdefiniowanej dla trybu wydania. Sprawdź ustawienia projektu w trakcie budowy.Wybranie opcji [Zdefiniuj stałą DEBUG] w polu Projekt -> Kompilacja jest jak włączenie # zdefiniowanie DEBUG na początku każdego pliku.
Jeśli chcesz zdefiniować stałą RELEASE dla konfiguracji wydania, przejdź do:
źródło
#if (RELEASE) [RequireHttps] #endif
W mojej instalacji VS (VS 2008)
#if RELEASE
nie działa. Jednak możesz po prostu użyć#if !DEBUG
Przykład:
źródło
Nigdy wcześniej tego nie widziałem ... ale widziałem:
i
Ta praca dla ciebie?
źródło
!
operator będzie działał, jak w twoim drugim przykładzie.Możesz użyć
#if(!DEBUG)
do tego celu.źródło
„Pop Catalin” ma rację. Kontrolowanie definicji w oparciu o rodzaj kompilacji zapewnia dużą elastyczność. Na przykład możesz mieć konfigurację „DEBUG”, „DEMO” i „RELEASE” w tym samym rozwiązaniu. Zapobiega to konieczności powielania programowania z dwoma różnymi rozwiązaniami.
Tak
#if RELEASE
lub#if (RELEASE)
działa tak samo, jak w#if DEBUG
przypadku zdefiniowania symbolu kompilacji warunkowej RELEASE.Poniższy fragment pochodzi z postu „Pop Catalin”: Jeśli chcesz zdefiniować stałą RELEASE dla konfiguracji wydania, przejdź do: * Właściwości projektu -> Kompilacja * Wybierz tryb wydania * w polu tekstowym Symbole kompilacji warunkowej wpisz: RELEASE
źródło
Wiem, że to stare pytanie, ale warto wspomnieć, że możesz tworzyć własne konfiguracje poza DEBUG i RELEASE, takie jak TEST lub UAT.
Jeśli następnie na karcie Kompilacja strony właściwości projektu ustawisz „Symbole kompilacji warunkowej” na TEST (na przykład), możesz użyć konstrukcji takiej jak:
Możesz użyć tej konstrukcji z konkretnego powodu, na przykład różnych klientów, jeśli potrzebujesz, lub nawet całych metod internetowych. Użyliśmy tego również w przeszłości, gdy niektóre polecenia powodowały problemy na określonym sprzęcie, więc mamy konfigurację aplikacji po wdrożeniu na sprzęcie X.
źródło
Możesz stworzyć własne warunkowe symbole kompilacji (dowolna nazwa, którą lubisz). Przejdź do „okna dialogowego kompilacji projektu”, znajdującego się w polu właściwości projektu, opcja menu: Projekt -> [nazwa projektu] Właściwości ...
Możesz również zdefiniować je „na górze pliku kodu C #”. Lubić:
możesz użyć tego symbolu w instrukcji #if:
źródło
dlaczego nie tylko
źródło
/d:RELEASE
też by działał. Możesz również dodać to do symboli kompilacji warunkowej w obszarze Konfiguracja wersji (karta budowania właściwości projektu).