¿Cómo compilo un proyecto de Visual Studio desde la línea de comandos?

Estoy progtwigndo el ciclo de pago, construcción, distribución, prueba y confirmación para una gran solución de C ++ que utiliza Monotone , CMake , Visual Studio Express 2008 y pruebas personalizadas.

Todas las otras partes parecen bastante sencillas, pero no veo cómo comstackr la solución de Visual Studio sin obtener la GUI.

El script está escrito en Python, pero una respuesta que me permitiría simplemente hacer una llamada a: os.system haría.

Conozco dos formas de hacerlo.

Método 1
El primer método (que yo prefiero) es usar msbuild :

msbuild project.sln /Flags... 

Método 2
También puede ejecutar:

 vcexpress project.sln /build /Flags... 

La opción vcexpress regresa inmediatamente y no imprime ningún resultado. Supongo que eso podría ser lo que quieres para un guión.

Tenga en cuenta que DevEnv no se distribuye con Visual Studio Express 2008 (pasé mucho tiempo tratando de averiguarlo cuando tuve un problema similar por primera vez).

Entonces, el resultado final podría ser:

 os.system("msbuild project.sln /p:Configuration=Debug") 

También querrá asegurarse de que sus variables de entorno sean correctas, ya que msbuild y vcexpress no están predeterminados en la ruta del sistema. Inicie el entorno de comstackción de Visual Studio y ejecute su script desde allí, o modifique las rutas en Python (con os.putenv ).

MSBuild generalmente funciona, pero me he encontrado con dificultades antes. Puede que tengas mejor suerte con

 devenv YourSolution.sln /Build 

Para ser honesto tengo que añadir mis 2 centavos.

Puedes hacerlo con msbuild.exe . Hay muchas versiones de msbuild.exe .

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework64 \ v3.5 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe
C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ msbuild.exe

Usa la versión que necesites. Básicamente tienes que usar el último.

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe

Así que cómo se hace.

  1. Ejecutar la ventana de COMANDO

  2. Introduzca la ruta a msbuild.exe

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe

  1. Ingrese el camino a la solución del proyecto como

“C: \ Users \ Clark.Kent \ Documents \ visual studio 2012 \ Projects \ WpfApplication1 \ WpfApplication1.sln”

  1. Añade las banderas que necesites después de la ruta de la solución.

  2. Presione ENTER

Tenga en cuenta que puede obtener ayuda sobre todas las posibles banderas como

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe / help

Usar msbuild como lo señalaron otros, funcionó para mí, pero necesitaba hacer un poco más que eso. En primer lugar, msbuild necesita tener acceso al comstackdor. Esto se puede hacer ejecutando:

 "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" 

Entonces msbuild no estaba en mi $ PATH, así que tuve que ejecutarlo a través de su ruta explícita:

 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln 

Por último, mi proyecto estaba haciendo uso de algunas variables como $(VisualStudioDir) . Parece que esos no se configuran con msbuild así que tuve que configurarlos manualmente a través de la opción /property :

 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln 

Esa línea finalmente me permitió comstackr mi proyecto.

Bonificación : parece que las herramientas de la línea de comandos no requieren un registro después de 30 días de uso, como lo hace la edición “gratuita” basada en GUI Visual Studio Community. Con el requisito de registro de Microsoft implementado, esa versión no es gratis. Free-as-in-facebook si algo …

MSBuild es tu amigo.

 msbuild "C:\path to solution\project.sln" 

DEVENV funciona bien en muchos casos, pero en un WIXPROJ para construir mi instalador WIX, todo lo que obtuve es un error “CATASTROPHIC” en el registro de salida.

Esto funciona: MSBUILD /Path/PROJECT.WIXPROJ / t: Build / p: Configuration = Release