# 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.