Muitas vezes aprendemos a fazer algo e continuamos fazendo sem procurar saber o que esta por trás e quais as consequência. Continuamos a praticar as mesmas ações criando um hábito. Assim, alguns programadores que usam o Visual Studio para criar suas aplicações acabam criando o hábito de executar as operações Clean seguida de Build toda vez que mudam o código sem saber o significado disso. Outros preferem realizar um Rebuild toda a vez que alteram ou modificam partes do código.
Vamos analisar cada uma dessas operações e verificar qual a diferença e como se comportam.
1- Build – /Build (devenv.exe)
Constrói uma solução ou projeto usando um arquivo de configuração de solução (.sln) especificado.
A opção Build no Visual Studio irá realizar uma compilação incremental, ou seja, somente os arquivos que foram alterados serão recriados e os arquivos que não foram modificados não serão compilados.
Build Solution -> Compila os arquivos de código (DLL e EXE) que foram alterados.
2-Clean – /Clean (devenv.exe)
A opção Clean do Visual Studio irá limpar todos os arquivos intermediários e diretórios de saída.
Esta opção é usada quando o Build ou Rebuild falha e você precisa limpar tudo e começar do zero.
Clean Solution -> Deleta todos os arquivos compilados (DLL e EXE).
3– ReBuild – /ReBuild (devenv.exe)
Executa a operação Clean e a seguir a operação Build para a solução especificada.
A opção Rebuild no Visual Studio vai excluir todos os arquivos compilados (DLLs e EXE) e vai executar um Build a partir do zero, independentemente dos arquivos terem sido modificados ou não.
Esta opção é geralmente usada quando você percebe que o Visual Studio não incorporou suas alterações no assembly mais recente.
Diferença entre Rebuild e Clean+Build
A diferença em realizar um Rebuild e fazer e “Clean, seguido de um Build” é que ao aplicar o Rebuild a operação vai limpar e construir cada projeto, um de cada vez, em vez de limpar todos e depois construir todos.
A diferença está na maneira como a operação de Build e de Clean acontecem para cada projeto.
Por exemplo, se a solução tiver dois projetos – Projeto 1 e Projeto 2 e você fizer uma operação de ReBuild, ela pegará o Projeto 1, limpará (excluirá) os arquivos compilados do Projeto 1 e a seguir os construirá, ou seja vai fazer um Build. Depois disso, ele pegará o Projeto 2, limpará os arquivos do Projeto 2 e o construirá.
Por outro lado, se você fizer a operação de Clean seguida de Build, ela primeiro limpará (excluirá) todos os arquivos compilados (DLLs e EXE) para ambos os projetos – Projeto 1 e Projeto 2 e, em seguida, construirá primeiro o Projeto 1, seguido pelo Projeto 2:
Rebuild Solution -> Exclui todos os arquivos compilados e os compila novamente, independentemente se o código foi alterado ou não.
E estamos conversados…