2009-01-31 14 views
88

Estoy creando secuencias de comandos para el ciclo de compra, compilación, distribución, prueba y confirmación para una solución grande de C++ que usa Monotone, CMake, Visual Studio Express 2008 y pruebas personalizadas.¿Cómo compilo un proyecto de Visual Studio desde la línea de comandos?

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

La secuencia de comandos está escrita en Python, pero una respuesta que me permitiera simplemente hacer una llamada a: os.system sería suficiente.

Respuesta

92

Conozco dos maneras de hacerlo.

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

msbuild project.sln /Flags... 

Método 2
También puede ejecutar:

vcexpress project.sln /build /Flags... 

El vcexpress la opción vuelve inmediatamente y no imprime ninguna salida. Supongo que 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 resolver eso cuando tuve un problema similar).

Por lo tanto, el resultado final podría ser:

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

También querrá asegurarse de que sus variables de entorno son correctas, como msbuild y vcexpress no son por defecto en la ruta del sistema. Inicie el entorno de compilación de Visual Studio y ejecútelo desde allí, o modifique las rutas en Python (con os.putenv).

+0

Esto también es aplicable a Visual Studio 2010 Express. –

+0

msbuild parece que no se envía con VS 2008 –

4

MSBuild is your friend.

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

He visto que falla en situaciones extrañas debido a las diferencias en cómo MSBuild y DevEnv procesan archivos .sln. –

37

MSBuild por lo general funciona, pero me he encontrado con dificultades antes. Puede tener mejor suerte con

devenv YourSolution.sln /Build 
+0

MSBuild no funciona con proyectos de Visual Fortran (* .vfproc). Gracias por apuntarme hacia devenv, que sí. –

+0

Tengo que usar: devenv YourSolution.sln/Build pero funcionó muy bien gracias. – bobwah

+7

También puede especificar la configuración: 'devenv YourSolution.sln/Build Debug' –

15

Para ser sincero, tengo que agregar mis 2 centavos.

Puede 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

uso versión que necesita. Básicamente tienes que usar el último.

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

Así cómo hacerlo.

  1. Ejecutar el COMANDO ventana

  2. de entrada a la ruta de MSBuild.exe

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

  1. el camino de entrada a la solución de proyecto como

"C: \ Users \ Clark.Kent \ documentos \ Visual Studio 2012 \ Projects \ WpfApplication1 \ WpfApplication1.sln"

  1. Agregue los indicadores que necesite después de la ruta de la solución.

  2. Presione ENTER

Nota puede obtener ayuda acerca de todas las banderas posibles como

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

2

DEVENV funciona bien en muchos casos, pero en un WIXPROJ para construir mi instalador WIX, todo lo que obtuve es un error "catastrófico" en el registro de salida.

Esto funciona: MSBUILD /Path/PROJECT.WIXPROJ/t: Construir/p: Configuración = Release

3

Usando msbuild como se ha señalado por otros trabajado para mí, pero tenía que hacer un poco más que eso . Antes que nada, msbuild necesita tener acceso al compilador. Esto se puede hacer mediante la ejecución:

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

Entonces msbuild no estaba en mi $ PATH por lo que tuvieron que correr 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 aquellos que no se deje establecido por msbuild así que tuve que hacerlo 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ó compilar mi proyecto.

Bonificación: parece que las herramientas de línea de comandos no requieren un registro después de 30 días de usarlas como lo hace la edición comunitaria de Visual Studio "libre" basada en GUI. Con el requisito de registro de Microsoft en su lugar, esa versión no es gratuita. Gratis-como-en-Facebook si algo ...

Cuestiones relacionadas