quarta-feira, 13 de junho de 2007

Compilação Condicional - Modo Debug e Modo Release.

Quando você compila sua aplicação tem duas opções, compilar em modo debug ou modo release (Caso não saiba, essa opção fica ao lado do botão Start Debuggin, o "play").

A idéia é compilar em modo debug enquanto estiver desenvolvendo e depurando a aplicação, e em modo release quando for colocar o aplicativo em produção , pois para depurar o executável, o compilador precisa embutir nele algumas informações extras, como nome do arquivo fonte e número da linha. Como você dificilmente irá depurar diretamente o aplicativo em produção, essas informações podem ser removidas para otimizar o aplicativo.

Além dessa otimização que o próprio compilador faz, o próprio programador pode especificar uma determinada parte do código que só será executada em um modo específico. Por exemplo, você quer escrever uma rotina de tratamento de erros que não mostre a mensagem de erro original para o usuário, pode fazer algo do tipo:

try
{
// Código
}
catch(Exception ex)
{
#if DEBUG
MessageBox.Show(ex.Message);
#else
MessageBox.Show("Ocorreu um erro no sistema!");
#endif
}

No código acima , o primeiro comando MessageBox será executado se o programa for compilado em modo DEBUG, e o segundo se a aplicação for compilada em modo Release.

Além disse, você pode usar o Atributo Conditional para excluir uma determinada função do modo release. Se você declarar uma função dessa forma :


[System.Diagnostics.Conditional("DEBUG")]
private void Funcao()

Essa função só será considerada se estiver em modo DEBUG, caso contrário , será ignorada. A vantagem nesse caso, é que você não precisa alterar os pontos do códigos que chamam a função, somente a própria função.

Nenhum comentário: