#if Pas de débogage en c #?


127

J'ai la ligne en code vb:

#if Not Debug

que je dois convertir, et je ne le vois pas en c #?

Y a-t-il quelque chose d'équivalent ou existe-t-il une solution de contournement?

Réponses:


239

Vous auriez besoin d'utiliser:

#if !DEBUG
    // Your code here
#endif

Ou, si votre symbole est en fait Debug

#if !Debug
    // Your code here
#endif

À partir de la documentation , vous pouvez effectivement traiter DEBUGcomme un booléen. Vous pouvez donc faire des tests complexes comme:

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

15

Juste pour que vous soyez familier avec ce qui se passe ici, il #ifs'agit d'une expression de prétraitement et d' DEBUGun symbole de compilation conditionnelle. Voici un article MSDN pour une explication plus approfondie.

Par défaut, lors de la configuration de débogage , Visual Studio vérifiera l' option de constante Define DEBUG sous les propriétés de génération du projet. Cela vaut pour C # et VB.NET. Si vous voulez devenir fou, vous pouvez définir de nouvelles configurations de construction et définir vos propres symboles de compilation conditionnelle. L'exemple typique lorsque vous voyez cela est:

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

10

Juste au cas où cela aiderait quelqu'un d'autre, voici ma réponse.

Cela ne fonctionnerait pas correctement:

#if !DEBUG
     // My stuff here
#endif

Mais cela a fonctionné:

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

3
Cela aurait pu avoir raison au jour de la publication, mais au moins pour VS 2015! DEBUG fonctionne comme prévu
Ole Albers

5

Je pense que quelque chose comme ça fonctionnera

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

5
Le simple fait de noter que les parenthèses ne sont pas nécessaires pour ces #ifinstructions conditionnelles . Il peut être écrit#if DEBUG
atconway

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

5
C'est une mauvaise réponse car elle utilise la logique d'exécution pour gérer ce qui pourrait être fait au moment de la compilation.
antiduh

Les modèles T4 au moment de la conception et autres auront besoin de ce genre de choses de temps en temps.
StingyJack
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.