Compartir a través de


Uso de varios procesadores para generar proyectos

Actualización: noviembre 2007

Visual Studio 2008 pueden aprovechar las ventajas de los sistemas que tienen varios procesadores o varios núcleos. Se crea un proceso de compilación independiente para cada procesador disponible. Por ejemplo, si el sistema tiene cuatro procesadores de impresión, se crearán cuatro procesos de compilación. MSBuild pueden procesar simultáneamente estas compilaciones y, por consiguiente, se reduce el tiempo de compilación total. Sin embargo, la compilación en paralelo introduce algunos cambios en la manera en que se producen los procesos de compilación. 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 generar un proyecto, sólo genera la referencia una vez. Si dos proyectos tienen la misma referencia entre proyectos, la referencia no se vuelve a generar 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

Las detección de ciclos funciona igual que en MSBuild 2.0, sólo 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 genera, las demás compilaciones de proyectos continúan. MSBuild no detendrá ninguna compilación de proyecto que se esté generando en paralelo con el que fracasó. Los demás proyectos continúan generándose hasta que se completan correctamente o fracasan. 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 genera 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 generar todos los proyectos de la solución.

Vea también

Conceptos

Tareas de MSBuild

Otros recursos

Generar para versiones concretas de .NET Framework