c# c++ visual-studio-2010 msbuild devenv

c# - MSBuild vs devenv para construcciones de línea de comando



c++ visual-studio-2010 (5)

Me preguntaba: ¿cuál es la diferencia entre usar msbuild y devenv al compilar soluciones desde la línea de comandos?

Una cosa obvia notada fue que msbuild construye proyectos dependientes que no están incluidos en la solución, mientras que devenv no.

¿Hay algún otro? ¿Hay algunas banderas especiales que se podrían pasar a msbuild para que coincidan exactamente con la estructura devenv?

PD: estoy usando Visual Studio 2010 SP1


He experimentado un proyecto dentro de un equipo multicapa: desarrolladores, evaluadores, implementadores. MSBuild era la herramienta principal de los implementadores: podían compilar y recompilar, simplemente estableciendo parámetros de construcción editando el archivo de configuración xml de MSBuild sin abrir el devenv. De hecho, a menudo usaban MSBuild en un entorno de preproducción donde no había nada de nada.

Nant es una herramienta similar de Apache Foundation.

Para más información echa un vistazo aquí:


Según esta entrada de blog de MSDN , intentan minimizar las diferencias, pero las que existen (es decir, usan un compilador de C # integrado en lugar de csc.exe o configuran la propiedad BuildingInsideVisualStudio ) se realizan principalmente para optimizar el rendimiento de las compilaciones.


Otra gran diferencia es que msbuild tiene algunas opciones que no existen para devenv . Por lo que puedo decir, no hay forma de aumentar la verbosidad de devenv pero puede aumentar la verbosidad de msbuild con la opción:

/v:diag


La principal ventaja de MSBuild es que no necesita tener instalado Visual Studio.

Una limitación de MSBuild es que no admite la construcción de proyectos de instalación de Visual Studio ( .vdproj ).

(Puede solucionar esto definiendo una tarea ejecutiva que invoque devenv , pero aún necesita Visual Studio).


Encontré un caso donde devenv escribió un mensaje de error cuando faltaba un archivo de proyecto, pero devolvió 0 de todos modos. Por el contrario, msbuild devolvió un valor distinto de cero. msbuild nuestro archivo MAKE al uso de msbuild para no pasar por alto los errores.