c++ - una - se necesita un ensamblado con nombre seguro
¿Cómo compilo un proyecto de Visual Studio desde la línea de comandos? (6)
Estoy guionando el ciclo de compra, compilación, distribución, prueba y compromiso 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 compilar la solución de Visual Studio sin obtener la GUI.
La secuencia de comandos está escrita en Python, pero una respuesta que me permite simplemente hacer una llamada a: os.system haría.
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
MSBuild generalmente funciona, pero he tenido dificultades antes. Puedes tener mejor suerte con
devenv YourSolution.sln /Build
Para ser sincero, tengo que agregar 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 necesitas Básicamente tienes que usar el último.
C: / Windows / Microsoft.NET / Framework64 / v4.0.30319 / msbuild.exe
Así que cómo se hace.
Ejecute la ventana de comando
Ingrese la ruta a msbuild.exe
C: / Windows / Microsoft.NET / Framework64 / v4.0.30319 / msbuild.exe
- Ingrese la ruta a la solución del proyecto como
"C: / Users / Clark.Kent / Documents / visual studio 2012 / Projects / WpfApplication1 / WpfApplication1.sln"
Agregue los indicadores que necesite después de la ruta de la solución.
Presione ENTER
Tenga en cuenta que puede obtener ayuda sobre todas las banderas posibles, como
C: / Windows / Microsoft.NET / Framework64 / v4.0.30319 / msbuild.exe / help
Sé de dos maneras de hacerlo.
Método 1
El primer método (que prefiero) es usar msbuild :
msbuild project.sln /Flags...
Método 2
También puedes ejecutar:
vcexpress project.sln /build /Flags...
La opción vcexpress vuelve inmediatamente y no imprime ningún resultado. 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 resolverlo cuando tuve un problema similar).
Entonces, el resultado final podría ser:
os.system("msbuild project.sln /p:Configuration=Debug")
También querrá asegurarse de que las variables de entorno sean correctas, ya que msbuild y vcexpress no están por defecto en la ruta del sistema. Inicie el entorno de compilación de Visual Studio y ejecute su script desde allí, o modifique las rutas en Python (con os.putenv ).
Usar msbuild
como lo señalaron otros funcionó para mí, pero necesitaba hacer algo más que solo eso. En primer lugar, msbuild
necesita tener acceso al compilador. 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 establecen por 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ó compilar mi proyecto.
Bono : 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 basada en la GUI "gratuita". Con el requisito de registro de Microsoft en su lugar, esa versión no es gratuita. Gratis como en Facebook si algo ...
msbuild "C:/path to solution/project.sln"