Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O MSBuild pode aproveitar ao máximo os sistemas que têm vários processadores ou processadores de vários núcleos criando um processo de build separado para cada processador. Por exemplo, se um sistema tiver quatro processadores, o MSBuild criará quatro processos de build.
O MSBuild pode processar os vários builds simultaneamente, o que reduz o tempo de build geral. No entanto, builds paralelos podem introduzir alterações na forma como os processos de compilação ocorrem.
Este artigo descreve as alterações de processo que podem ocorrer quando vários builds são executados simultaneamente.
Referências de projeto a projeto
Quando o Microsoft Build Engine encontra uma referência de projeto (ProjectReference elemento) durante builds paralelos para um projeto, ele cria a referência apenas uma vez. Se dois projetos tiverem a mesma referência de projeto, a referência não será recriada para cada projeto. Em vez disso, o mecanismo de build retorna a mesma referência de projeto para ambos os projetos que têm a dependência. O MSBuild também fornece a mesma referência de projeto para solicitações futuras na sessão para o mesmo destino.
Detecção do ciclo
A detecção de ciclos durante builds paralelos tem o mesmo comportamento que o MSBuild 2.0. A única diferença é que a versão mais recente do MSBuild pode relatar a detecção do ciclo em um momento diferente ou no build.
Erros e exceções durante builds paralelos
Durante builds paralelos, erros e exceções podem ocorrer em momentos diferentes do que ocorrem durante um build não paralelo. Além disso, se um projeto não compilar, os outros projetos continuam sendo compilados.
O MSBuild não interrompe nenhuma compilação de projeto em paralelo com uma compilação com falha. Outros projetos continuam a ser criados até que tenham êxito ou falha. Quando a ContinueOnError configuração estiver habilitada, nenhum build será interrompido, mesmo se ocorrer um erro.
Arquivos de projeto (.vcxproj) e solução (.sln) do C++
Os arquivos de projeto C++ (.vcxproj) e solução (.sln) podem ser passados para a tarefa MSBuild.
- Projetos C++: a API VCWrapperProject é chamada e, em seguida, o projeto interno do MSBuild é criado.
- Soluções C++: uma instância SolutionWrapperProject é criada e, em seguida, o projeto interno do MSBuild é criado.
Em ambos os casos, o projeto resultante é tratado como qualquer outro projeto do MSBuild.
Execução de vários processos
Quase todas as atividades relacionadas à compilação exigem o diretório atual para permanecer constante ao longo do processo de compilação para evitar erros de caminho. Os projetos não podem ser executados em threads diferentes no MSBuild porque podem causar a criação de vários diretórios.
Para evitar esse problema, mas ainda habilitar builds de vários processadores, o MSBuild usa o isolamento do processo. Esse processo habilitou o MSBuild a criar um máximo de n processos, em que n é igual ao número de processadores disponíveis no sistema. Por exemplo, se o MSBuild criar uma solução em um sistema com dois processadores, apenas dois processos de build serão criados. Esses processos são reutilizados para criar todos os projetos na solução.