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