# c # içinde Hata Ayıklama Yapılamazsa?


127

Fi kodunda satır var:

#if Not Debug

hangisini dönüştürmeliyim ve c # 'de görmüyorum?

Buna eşdeğer bir şey var mı yoksa geçici bir çözüm var mı?

Yanıtlar:


239

Kullanmanız gerekecek:

#if !DEBUG
    // Your code here
#endif

Veya sembolünüz gerçekten Debug

#if !Debug
    // Your code here
#endif

Gönderen belgeler , etkili tedavi edebilir DEBUGboolean olarak. Böylece aşağıdaki gibi karmaşık testler yapabilirsiniz:

#if !DEBUG || (DEBUG && SOMETHING)

15

Sırf burada neler olup bittiğini biliyorsunuz #if, bir ön işleme ifadesi ve DEBUGkoşullu bir derleme sembolü. Daha ayrıntılı bir açıklama için bir MSDN makalesi burada .

Varsayılan olarak, Hata Ayıklama yapılandırmasındayken, Visual Studio projenin Derleme özellikleri altındaki DEBUG sabitini tanımla seçeneğini kontrol eder . Bu hem C # hem de VB.NET için geçerlidir. Çıldırmak istiyorsanız, yeni yapı konfigürasyonları tanımlayabilir ve kendi Koşullu derleme sembollerinizi tanımlayabilirsiniz. Bunu gördüğünüzde tipik örnek şudur:

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif

10

Başka birine yardım etmesi durumunda, cevabım burada.

Bu doğru çalışmaz:

#if !DEBUG
     // My stuff here
#endif

Ama bu işe yaradı:

#if (DEBUG == false)
     // My stuff here
#endif

3
Bu yayınlandığı gün haklı olabilirdi, ama en azından VS 2015 için! DEBUG beklendiği gibi çalışıyor
Ole Albers

5

Sanırım böyle bir şey işe yarayacak

 #if (DEBUG)
//Something
#else
//Something
#endif

5
Bu koşullu #ififadeler için sadece parantezlere dikkat etmek gerekli değildir . Bu yazılabilir#if DEBUG
atconway

0
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }

5
Bu kötü bir cevaptır çünkü derleme zamanında neler yapılabileceğini işlemek için çalışma zamanı mantığını kullanır.
antiduh

Tasarım zamanı T4 şablonlama ve benzeri zaman zaman bu tür şeylere ihtiyaç duyacaktır.
StingyJack
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.