#if Não depurar em c #?

127

Eu tenho a linha no código vb:

#if Not Debug

que devo converter e não o vejo em c #?

Existe algo equivalente a isso ou há alguma solução alternativa?

user278618
fonte

Respostas:

239

Você precisaria usar:

#if !DEBUG
    // Your code here
#endif

Ou, se seu símbolo é realmente Debug

#if !Debug
    // Your code here
#endif

A partir da documentação , você pode efetivamente tratar DEBUGcomo um booleano. Então você pode fazer testes complexos como:

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

Apenas para que você esteja familiarizado com o que está acontecendo aqui, #ifé uma expressão de pré-processamento e DEBUGum símbolo de compilação condicional. Aqui está um artigo do MSDN para uma explicação mais detalhada.

Por padrão, quando na configuração Debug , o Visual Studio verifica a opção constante Definir DEBUG nas propriedades de compilação do projeto. Isso vale para C # e VB.NET. Se você quiser ficar louco, pode definir novas configurações de compilação e definir seus próprios símbolos de compilação condicional. O exemplo típico quando você vê isso é:

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

Apenas no caso de ajudar alguém, aqui está a minha resposta.

Isso não funcionaria corretamente:

#if !DEBUG
     // My stuff here
#endif

Mas isso funcionou:

#if (DEBUG == false)
     // My stuff here
#endif
Vaccano
fonte
3
Poderia ter sido logo no dia este foi publicado, mas pelo menos para VS 2015 DEBUG funciona como esperado!
Ole Albers
5

Eu acho que algo como vai funcionar

 #if (DEBUG)
//Something
#else
//Something
#endif
KhanZeeshan
fonte
5
Apenas observar os parênteses não é necessário para essas #ifdeclarações condicionais . Pode ser escrito#if DEBUG
atconway 15/03
0
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }
Luiz Flavio Cavalcanti da Silv
fonte
5
Essa é uma resposta ruim, pois usa a lógica de tempo de execução para lidar com o que poderia ser feito em tempo de compilação.
Antiduh 18/03/16
O tempo de design do modelo T4 e similares precisarão desse tipo de coisa de tempos em tempos.
precisa saber é o seguinte