Em todos os exemplos que eu vi da diretiva de compilador #if, eles usam "DEBUG". Posso usar "RELEASE" da mesma maneira para excluir código que não quero executar quando compilado no modo de depuração? O código que eu quero cercar com esse bloco envia muitos e-mails e não quero enviá-los acidentalmente durante o teste.
277
#if !DEBUG
serve a mesma função que#if RELEASE
teria. Como alternativa,#if DEBUG
então#else
,#endif
se houver um código diferente para executar nos modos.Respostas:
Não, não vai, a menos que você faça algum trabalho.
A parte importante aqui é o que realmente é DEBUG, e é um tipo de constante definida que o compilador pode verificar.
Se você verificar as propriedades do projeto, na guia Compilar, encontrará três coisas:
Não existe essa caixa de seleção, nem constante / símbolo predefinido com o nome RELEASE.
No entanto, você pode facilmente adicionar esse nome à caixa de texto denominada Símbolos de compilação condicional, mas certifique-se de definir a configuração do projeto para o modo Release antes de fazer isso, pois essas configurações são por configuração.
Então, basicamente, a menos que você adicione isso à caixa de texto,
#if RELEASE
não produzirá nenhum código em nenhuma configuração.fonte
RELEASE
não está definido, mas você pode usarfonte
RELEASE
foi definido.Não.
Enquanto na configuração de depuração, há um
DEBUG
constante definida (definida automaticamente pelo Visual Studio), enquanto não existe essa constante definida para o modo de liberação. Verifique as configurações do seu projeto em build.Selecionando [Definir constante DEBUG] em Projeto -> Compilar é como incluir #define DEBUG no início de cada arquivo.
Se você deseja definir uma constante RELEASE para a configuração do release, acesse:
fonte
#if (RELEASE) [RequireHttps] #endif
Na minha instalação do VS (VS 2008)
#if RELEASE
não funciona. No entanto, você poderia apenas usar#if !DEBUG
Exemplo:
fonte
Nunca vi isso antes ... mas já vi:
e
Esse trabalho para você?
fonte
!
operador funcionará, como no seu segundo exemplo.Você pode usar
#if(!DEBUG)
para esse fim.fonte
"Pop Catalin" acertou. O controle da definição com base no tipo de construção fornece uma grande flexibilidade. Por exemplo, você pode ter uma configuração "DEBUG", "DEMO" e "RELEASE" na mesma solução. Isso evita a necessidade de programação duplicada com duas soluções diferentes.
Então sim
#if RELEASE
ou#if (RELEASE)
funciona da mesma maneira que#if DEBUG
quando o símbolo de compilação RELEASE Condicional é definido.O seguinte é retirado da publicação "Pop Catalin": Se você deseja definir uma constante RELEASE para a configuração da versão, vá para: * Propriedades do projeto -> Construção * Selecione o modo de liberação * na caixa de texto Símbolos de compilação condicional, digite: RELEASE
fonte
Sei que essa é uma pergunta antiga, mas vale a pena mencionar que você pode criar suas próprias configurações fora do DEBUG e RELEASE, como TEST ou UAT.
Se, na guia Compilar da página de propriedades do projeto, você definir os "Símbolos de compilação condicional" como TEST (por exemplo), poderá usar uma construção como
Você pode usar essa construção por motivos específicos, como clientes diferentes, se necessário, ou mesmo Métodos da Web inteiros, por exemplo. Também usamos isso no passado, onde alguns comandos causaram problemas em hardware específico, portanto, temos uma configuração para um aplicativo quando implantado no hardware X.
fonte
Você pode criar seus próprios símbolos condicionais em tempo de compilação (qualquer nome que desejar). Vá para a "caixa de diálogo Build do projeto", localizada na caixa de propriedades do projeto, opção de menu: Projeto -> [nome do projeto] Propriedades ...
Você também pode defini-los "na parte superior do arquivo de código C #". Gostar:
você pode usar o símbolo em uma instrução #if:
fonte
por que não apenas
fonte
/d:RELEASE
também funcionaria. Você também pode adicionar isso aos símbolos de compilação condicional em Configuração da versão (guia de criação de propriedades do projeto).