¿Cómo crear un script de compilación simple para Visual Studio desde la línea de comandos?
Tengo muchas soluciones de Visual Studio Project en varios directorios (todos con la extensión .sln) y quiero escribir un script por lotes simple que genere automáticamente todas las soluciones enumeradas en el archivo por lotes.
Puedo crear manualmente una solución iniciando elVisual Studio Command Prompt
(que es solo una instancia de línea de comandos con el siguiente comando ejecutado
"%comspec%" /k "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
Después de lo cual construyo el proyecto llamando:
devenv "path\to\solutionFile\projectSolution1.sln" /build Debug
Esto compilará el proyecto (suponiendo que el proyecto no tenga errores) y enjuague y repita para cada proyecto que quiera construir.
sin embargo cuando tengo lo siguiente en un archivo por lotes llamadobuild.bat
:
"%comspec%" /k "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
echo "Starting Build for all Projects with proposed changes"
echo .
devenv "path\to\solutionFile\projectSolution2.sln" /build Debug
devenv "another\path\to\solutionFile\projectSolution3.sln" /build Debug
devenv "yet\another\path\to\solutionFile\projectSolution4.sln" /build Debug
echo "All builds completed."
pause
El script por lotes solo ejecuta la primera líneay espera hasta que escribaexit
antes de ejecutar a los demás. Mi comprensión de esto basada en la investigación que he realizado sobre archivos por lotes y todas las preguntas de StackOverflow es quecmd
en realidad invoca otra instancia de sí mismo que se ejecutavcvarsall.bat
para configurar el entorno de construcción.
Esto no funcionará como escribirexit
mata esa instancia condevenv
configurar y los comandos posteriores no se pueden ejecutar comodevenv
no es un comando reconocido (ya que la ruta exportada ya no existirá)
En breve, cómo se puede lograr esto (pasando el resto de los comandos a la instancia de cmd condevenv
definido) en un solo archivo por lotes? Entiendo que esta no es una forma sólida (y hay muchas herramientas que hacen esto) de invocar construcciones, pero solo espero tener un script por lotes para automatizar el trabajo manual de llamar individualmente a estos proyectos.