# si no se depura en c #?

127

Tengo la línea en el código vb:

#if Not Debug

que debo convertir y no lo veo en c #?

¿Hay algo equivalente o hay alguna solución?

usuario278618
fuente

Respuestas:

239

Necesitarías usar:

#if !DEBUG
    // Your code here
#endif

O, si su símbolo es en realidad Debug

#if !Debug
    // Your code here
#endif

De la documentación , puede tratar efectivamente DEBUGcomo un booleano. Entonces puedes hacer pruebas complejas como:

#if !DEBUG || (DEBUG && SOMETHING)
CodeNaked
fuente
15

Solo para que esté familiarizado con lo que está sucediendo aquí, #ifes una expresión de preprocesamiento y DEBUGes un símbolo de compilación condicional. Aquí hay un artículo de MSDN para una explicación más detallada.

De manera predeterminada, cuando está en la configuración de depuración , Visual Studio verificará la opción Definir constante de DEPURACIÓN en las propiedades de compilación del proyecto. Esto se aplica tanto a C # como a VB.NET. Si quiere volverse loco, puede definir nuevas configuraciones de compilación y definir sus propios símbolos de compilación condicional. Sin embargo, el ejemplo típico cuando ves esto es:

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif
Aaron Daniels
fuente
10

En caso de que ayude a alguien más, aquí está mi respuesta.

Esto no funcionaría bien:

#if !DEBUG
     // My stuff here
#endif

Pero esto funcionó:

#if (DEBUG == false)
     // My stuff here
#endif
Vaccano
fuente
3
Podría haber sido justo en el día en que esto se publicó, ¡pero al menos para VS 2015! DEBUG funciona como se esperaba
Ole Albers
5

Creo que algo así funcionará

 #if (DEBUG)
//Something
#else
//Something
#endif
KhanZeeshan
fuente
55
Simplemente señalar el paréntesis no es necesario para estas #ifdeclaraciones condicionales . Se puede escribir#if DEBUG
atconway
0
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }
Luiz Flavio Cavalcanti da Silv
fuente
55
Esta es una mala respuesta, ya que utiliza la lógica de tiempo de ejecución para manejar lo que se podría hacer en tiempo de compilación.
antiduh
Las plantillas de tiempo de diseño T4 y similares necesitarán este tipo de cosas de vez en cuando.
StingyJack