MSBuild orden de compilación

Tengo una gran solución con más de 100 proyectos (C ++, Managed C ++, C #) y muchos de ellos dependen de cada uno.

Tengo un servidor TeamCity y quiero construir esta solución allí.

Cuando compilo la solución en VisualStudio, todo va bien, pero con TeamCity tengo un error CS0006. Sé por qué eso. TeamCity usa MSBuild 4 para crear soluciones, pero hay un error conocido en MSBuild 4: ignora el orden de compilación y los proyectos de compilación de las soluciones para que así lo desee. Debido a este comportamiento si tiene:

Project A
Project B which has reference to A

MSBuild puede construir estos proyectos en tal orden:

1. B
2. A

La solución más fácil es configurarBuildProjectReferences = true (que es predeterminado) y todos los proyectos referenciados se compilarán automáticamente. Pero no puedo usar este enfoque porque no todos los proyectos referenciados en esta solución, y no puedo crear proyectos a partir de otra solución.

Aquí hay otra solución para este problema - usarConfigurationManager y deshabilite todos los proyectos, que no deberían compilarse, pero funciona solo en VisualStudio - MSBuild ignora eso y construye todos los proyectos referenciados.

El problema es restaurar el orden de compilación que puedo ver en VisualStudio en la ventanaProjectBuildOrder lo cual no es cierto si uso MSBuild directamente desde la Consola.

Respuestas a la pregunta(3)

Su respuesta a la pregunta