Come si compila un progetto Visual Studio dalla riga di comando?


112

Sto creando script per il ciclo di checkout, build, distribuzione, test e commit per una soluzione C ++ di grandi dimensioni che utilizza Monotone , CMake , Visual Studio Express 2008 e test personalizzati.

Tutte le altre parti sembrano piuttosto semplici, ma non vedo come compilare la soluzione Visual Studio senza ottenere la GUI.

Lo script è scritto in Python, ma una risposta che mi permetterebbe di effettuare una chiamata a: os.system andrebbe bene.

Risposte:


116

Conosco due modi per farlo.

Metodo 1
Il primo metodo (che preferisco) è usare msbuild :

msbuild project.sln /Flags...

Metodo 2
Puoi anche eseguire:

vcexpress project.sln /build /Flags...

L'opzione vcexpress ritorna immediatamente e non stampa alcun output. Suppongo che potrebbe essere quello che vuoi per una sceneggiatura.

Nota che DevEnv non è distribuito con Visual Studio Express 2008 (ho passato molto tempo a cercare di capirlo quando ho avuto per la prima volta un problema simile).

Quindi, il risultato finale potrebbe essere:

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

Dovrai anche assicurarti che le tue variabili di ambiente siano corrette, poiché msbuild e vcexpress non sono per impostazione predefinita sul percorso di sistema. Avvia l'ambiente di compilazione di Visual Studio ed esegui lo script da lì oppure modifica i percorsi in Python (con os.putenv ).


Questo è applicabile anche a Visual Studio 2010 Express.
Samuel Harmer,

msbuild non sembra essere disponibile con VS 2008
Lucky Luke

46

MSBuild di solito funziona, ma ho già incontrato difficoltà. Potresti avere più fortuna con

devenv YourSolution.sln /Build 

MSBuild non funziona con i progetti Visual Fortran (* .vfproc). Grazie per avermi indicato devenv, che lo fa.
Maik Beckmann

Devo usare: devenv YourSolution.sln / Build ma ha funzionato alla grande, grazie.
bobwah

7
Puoi anche specificare la configurazione:devenv YourSolution.sln /Build Debug
Josh Stribling

Funziona alla grande. Si può anche ricostruire usando il comando seguentedevenv YourSolution.sln /rebuild
Abhineet

1
Inoltre è possibile ricostruire per la modalità di rilascio o di debug semplicemente aggiungendo debug o rilascio dopo uno spazio. Ad esempio: devenv YourSolution.sln /rebuild releaseodevenv YourSolution.sln /rebuild debug
Abhineet

20

Ad essere sincero devo aggiungere i miei 2 centesimi.

Puoi farlo con msbuild.exe . Esistono molte versioni di 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 versione che ti serve. Fondamentalmente devi usare l'ultimo.

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

Quindi come si fa.

  1. Esegui la finestra COMANDO

  2. Immettere il percorso di msbuild.exe

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

  1. Immettere il percorso per la soluzione del progetto come

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

  1. Aggiungi eventuali flag di cui hai bisogno dopo il percorso della soluzione.

  2. Premere INVIO

Nota che puoi ottenere aiuto su tutti i possibili flag come

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


6
Mi piace molto come hai aggiunto i dettagli per i nuovi sviluppatori come dove trovare msbuild ecc.
Ayushmati

8

Usare msbuildcome indicato da altri ha funzionato per me, ma avevo bisogno di fare qualcosa di più. Prima di tutto, msbuilddeve avere accesso al compilatore. Questo può essere fatto eseguendo:

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

Quindi msbuildnon era nel mio $ PATH, quindi ho dovuto eseguirlo tramite il suo percorso esplicito:

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

Infine, il mio progetto utilizzava alcune variabili come $(VisualStudioDir). Sembra che quelli non vengano impostati, msbuildquindi ho dovuto impostarli manualmente tramite l' /propertyopzione:

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

Quella riga poi mi ha finalmente permesso di compilare il mio progetto.

Bonus : sembra che gli strumenti della riga di comando non richiedano una registrazione dopo 30 giorni di utilizzo come fa l'edizione "gratuita" di Visual Studio Community basata su GUI. Con l'obbligo di registrazione di Microsoft in atto, quella versione non è affatto gratuita. Free-as-in-facebook semmai ...



3

DEVENV funziona bene in molti casi, ma su un WIXPROJ per costruire il mio programma di installazione WIX, tutto quello che ho ottenuto è un errore "CATASTROPHIC" nel registro di uscita.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.