Qual é a diferença entre apenas uma reconstrução e uma compilação Clean + no Visual Studio 2008? O Clean + Build é diferente do Clean + Rebuild ?
Qual é a diferença entre apenas uma reconstrução e uma compilação Clean + no Visual Studio 2008? O Clean + Build é diferente do Clean + Rebuild ?
Respostas:
Reconstruir = Limpar + Construir (normalmente)
Detalhes notáveis:
Para uma solução para vários projetos, "reconstruir solução" faz uma "limpeza" seguida de uma "construção" para cada projeto (possivelmente em paralelo). Enquanto uma "solução limpa" seguida de uma "solução de construção" primeiro limpa todos os projetos (possivelmente em paralelo) e depois cria todos os projetos (possivelmente em paralelo). Essa diferença no seqüenciamento de eventos pode se tornar significativa quando as dependências entre projetos entram em jogo.
Todas as três ações correspondem aos destinos do MSBuild. Portanto, um projeto pode substituir a ação Reconstruir para fazer algo completamente diferente.
Earl está correto em 99% das vezes Rebuild = Clean + Build.
Mas eles não são garantidos para ser o mesmo. As três ações (reconstruir, criar, limpar) representam diferentes destinos do MSBuild. Cada um dos quais pode ser substituído por qualquer arquivo de projeto para executar ações personalizadas. Portanto, é perfeitamente possível que alguém substitua a reconstrução para executar várias ações antes de iniciar uma compilação limpa + (ou removê-las totalmente).
Muito um caso de canto, mas apontando devido a discussões de comentários.
Vamos definir a implementação padrão do Rebuild em termos das implementações padrão Clean e Build:
Por projeto: Projeto de reconstrução = Projeto limpo + Projeto de construção.
Por solução: Reconstrua sln = foreach project em sln (projeto Clean + Build project).
Observe que, devido às diferenças na ordem de execução, Reconstruir sln não é o mesmo que (Limpar sln + Construir sln) = (projeto foreach no sln Projeto limpo) + (projeto foreach no projeto sln Build). Além disso, esse "foreach" pode ser executado simultaneamente, portanto, tarefas diferentes podem ser executadas simultaneamente nos dois cenários.
Digamos que você tenha um sln que contenha proj1, proj2 e proj3.
Reconstruir sln = (Limpar proj1 + Construir proj1) & (Limpar proj2 + Construir proj2) & (Limpar proj3 + Construir proj3)
Limpar Sln + Construir Sln = (Limpar proj1 e Limpar proj2 e Limpar proj3) + (Construir proj1 e Construir proj2 e Construir proj3)
+ significa serial, & significa simultâneo.
Portanto, se as dependências do projeto não estiverem configuradas corretamente, há uma chance de que, ao executar o Rebuild sln, alguns de seus projetos sejam vinculados a uma biblioteca antiga. Isso ocorre porque não é garantido que todas as limpezas sejam concluídas antes do início da primeira compilação. Se você executar o Clean sln + Build sln, eles fornecerão um erro de link e o informarão imediatamente, em vez de fornecer um aplicativo com comportamento estranho.
Em http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm (apenas procurei no Google):
Compilar significa compilar e vincular apenas os arquivos de origem que foram alterados desde a última compilação, enquanto Reconstruir significa compilar e vincular todos os arquivos de origem, independentemente de terem sido alterados ou não. Construir é a coisa normal a fazer e é mais rápido. Às vezes, as versões dos componentes de destino do projeto podem ficar fora de sincronia e a reconstrução é necessária para tornar a compilação bem-sucedida. Na prática, você nunca precisa limpar.
Compilar ou recriar Solução cria ou reconstrói todos os projetos na sua solução, enquanto Compilar ou Reconstruir cria ou reconstrói o projeto StartUp, "olá" na captura de tela acima. Para definir o projeto StartUp, clique com o botão direito do mouse no nome do projeto desejado na guia Solution Explorer e selecione Set as StartUp project. O nome do projeto agora aparece em negrito. Como as soluções de tarefas domésticas normalmente têm apenas um projeto, a Solução Compilar ou Reconstruir é efetivamente a mesma que Compilar ou Reconstruir.
Compilar apenas compila o arquivo de origem atualmente sendo editado. Útil para verificar rapidamente erros quando o restante dos arquivos de origem estiver em um estado incompleto que impediria uma compilação bem-sucedida de todo o projeto. Ctrl-F7 é a tecla de atalho para Compilar.
A partir desta postagem no blog, o autor vinculou como comentário sobre esta pergunta :
Na verdade não!!! eles não são iguais.
A diferença está na seqüência de projetos serem limpos e construídos. Digamos que temos dois projetos em uma solução. Limpar e, em seguida, compilar executará a limpeza para ambos os projetos e, em seguida, a compilação ocorrerá individualmente enquanto na reconstrução o projeto A será limpo e depois compilado depois que o projeto B estiver limpo e depois compilado e assim por diante.