Uso de varios procesadores para compilar proyectos

MSBuild 3,5 puede aprovechar los sistemas que tienen varios procesadores, o de los procesadores de múltiple- shell.Se crea un proceso de compilación independiente para cada procesador disponible.Por ejemplo, si el sistema tiene cuatro procesadores, se crean cuatro procesos de compilación.se reduce MSBuild puede procesar estas compilaciones simultáneamente y, por tanto en conjunto compila tiempo. Sin embargo, la compilación paralelo presenta algunos cambios en cómo los procesos de compilación aparecen.En este tema se analizan estos cambios.

Referencias entre proyectos

Cuando Microsoft Build Engine encuentra una referencia entre proyectos mientras está utilizando compilaciones en paralelo para compilar un proyecto, solo compila la referencia una vez.Si dos proyectos tienen la misma referencia entre proyectos, la referencia no se recompila para cada proyecto.En su lugar, el motor de compilación devuelve la misma referencia entre proyectos a los dos proyectos que dependen de él.En la misma referencia entre proyectos se proporcionan las solicitudes futuras para el mismo destino en la sesión.

Detección de ciclos

La detección de ciclos funciona igual que en MSBuild 2.0, solo que ahora MSBuild pueden notificar la detección del ciclo en un momento diferente o en la compilación.

Errores y excepciones durante las compilaciones en paralelo

En las compilaciones en paralelo, los errores y excepciones pueden producirse en momentos diferentes que en una compilación no paralela, y cuando un proyecto no se compila, las demás compilaciones de proyectos continúan.MSBuild no detendrá ningún proyecto compilado que no detendrá al que se produjo un error. Proyectos que se está que tienen éxito o errores.Sin embargo, si se ha habilitado ContinueOnError, no se detendrá ninguna compilación aunque se produzca un error.

Archivos de proyecto (.vcproj) y solución (.sln) de Visual C++

Los archivos de proyecto (.vcproj) y los archivos de solución (.sln) de Visual C++ se pueden pasar a MSBuild (Tarea).Para los proyectos de Visual C++, se llama a VCWrapperProject y, a continuación, se crea el proyecto de MSBuild interno.Para las soluciones de Visual C++, se crea un SolutionWrapperProject y, a continuación, se crea el proyecto de MSBuild interno.En ambos casos, el proyecto resultante se trata igual que cualquier otro proyecto de MSBuild.

Ejecución con varios procesos

Casi todas las actividades relacionadas con la compilación requieren que el directorio actual permanezca constante a lo largo del proceso de compilación para evitar errores relacionados con la ruta de acceso.Por consiguiente, los proyectos no se pueden ejecutar en subprocesos diferentes de MSBuild porque haría que se crearan varios directorios.

Para evitar este problema y habilitar al mismo tiempo las compilaciones para varios procesadores, MSBuild utiliza el "aislamiento de procesos". Mediante el aislamiento de procesos, MSBuild pueden crear un máximo de n procesos, donde n es el número de procesadores disponibles en el sistema.Por ejemplo, si MSBuild compila una solución en un sistema que tiene dos procesadores de impresión, sólo se crean dos procesos de compilación.Estos procesos se reutilizan para compilar todos los proyectos de la solución.

Vea también

Conceptos

Compilar varios proyectos en paralelo con MSBuild

Tareas de MSBuild