web-dev-qa-db-fra.com

Comment compiler un projet Visual Studio à partir de la ligne de commande?

Je suis en train d'écrire le cycle d'extraction, de génération, de distribution, de test et de validation pour une solution C++ volumineuse utilisant Monotone , CMake , Visual Studio Express 2008 et des tests personnalisés. .

Toutes les autres parties semblent assez simples, mais je ne vois pas comment compiler la solution Visual Studio sans obtenir l'interface graphique.

Le script est écrit en Python, mais une réponse qui me permettrait de simplement appeler: os.system ferait l'affaire.

102
John Mulder

Je connais deux façons de le faire.

Méthode 1
La première méthode (que je préfère) consiste à utiliser msbuild :

msbuild project.sln /Flags...

Méthode 2
Vous pouvez aussi lancer:

vcexpress project.sln /build /Flags...

L'option vcexpress retourne immédiatement et n'imprime aucune sortie. Je suppose que cela pourrait être ce que vous voulez pour un script.

Notez que DevEnv n'est pas distribué avec Visual Studio Express 2008 (j'ai passé beaucoup de temps à essayer de comprendre cela quand j'ai eu un problème similaire pour la première fois).

Donc, le résultat final pourrait être:

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

Vous voudrez également vous assurer que vos variables d'environnement sont correctes, car msbuild et vcexpress ne sont pas par défaut sur le chemin système. Démarrez l'environnement de génération de Visual Studio et exécutez votre script à partir de là, ou modifiez les chemins d'accès dans Python (avec os.putenv ).

109
Moses Schwartz

MSBuild fonctionne généralement, mais j'ai déjà eu des difficultés auparavant. Vous pouvez avoir plus de chance avec

devenv YourSolution.sln /Build 
42
Jeffrey Hantin

Pour être honnête, je dois ajouter mes 2 centimes.

Vous pouvez le faire avec msbuild.exe. Il existe de nombreuses versions 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

Utilisez la version dont vous avez besoin. Fondamentalement, vous devez utiliser le dernier.

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

Alors, comment le faire.

  1. Exécutez la fenêtre

  2. Entrez le chemin d'accès à msbuild.exe

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

  1. Entrez le chemin d'accès à la solution du projet comme

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

  1. Ajoutez tous les indicateurs dont vous avez besoin après le chemin de la solution.

  2. Appuyez sur ENTREZ

Notez que vous pouvez obtenir de l’aide sur tous les drapeaux possibles tels que

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

17
Developer

Utiliser msbuild comme l'ont souligné d'autres personnes a fonctionné pour moi, mais je devais faire un peu plus que cela. Tout d'abord, msbuild doit avoir accès au compilateur. Cela peut être fait en exécutant:

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

Alors msbuild n'était pas dans mon $ PATH, je devais donc l'exécuter via son chemin explicite:

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

Enfin, mon projet utilisait des variables telles que $(VisualStudioDir). Il semble que ceux-ci ne soient pas définis par msbuild alors je devais les définir manuellement via l'option /property:

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

Cette ligne m'a finalement permis de compiler mon projet.

Bonus: il semble que les outils de ligne de commande ne nécessitent pas d'enregistrement 30 jours après leur utilisation, contrairement à l'édition "gratuite" de Visual Studio Community basée sur une interface graphique. Avec l'exigence d'inscription de Microsoft en place, cette version est à peine gratuite. Free-as-in-facebook si quelque chose ...

6
josch

MSBuild est votre ami.

msbuild "C:\path to solution\project.sln"
3
Adam Davis

DEVENV fonctionne bien dans de nombreux cas, mais sur un WIXPROJ pour construire mon programme d'installation WIX, tout ce que j'ai obtenu est une erreur "CATASTROPHIC" dans le journal Out.

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

2
peter.fr