web-dev-qa-db-fra.com

Comment exécuter la commande 'msbuild' à partir d'un fichier batch

Je voudrais créer un fichier batch pour faire les builds de mon projet VS en un clic. Tous les jours, je fais les étapes suivantes:

  1. Ouvre une console cmd en tant qu'administrateur
  2. Aller sur le chemin de mon projet/solution (en utilisant les commandes CD .., CD)
  3. Écrivez la commande suivante pour effectuer la construction:

    msbuild mySolution.sln/p: configuration = debug

Comme indiqué précédemment, je voudrais faire tout ce processus en un seul clic. Donc, j'essaie de créer un fichier .bat pour le faire.

Voici le code de mon fichier batch:

set location="C:\myPath\..\MyFolderSolution"
set pathMSBuild = "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"

@echo off
cls

call %pathMSBuild%
cd %location%
msbuild.exe "lucre.sln" /p:configuration=debug
pause

Cependant, lorsque j'essaie d'exécuter le fichier de commandes, j'obtiens l'erreur suivante: "msbuild" n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier de commandes.

Tout indice ou aide pour savoir si c'est possible et si oui, comment le faire sera très apprécié

Cordialement!

20
MikePR

Vous n'êtes pas dans le bon répertoire, vous devez cd dans le répertoire où se trouve msbuild. Essayez ceci:

set pathMSBuild="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\"
@echo off
cls
cd %pathMSBuild%
msbuild.exe "C:\myPath\..\MyFolderSolution\lucre.sln" /p:configuration=debug
pause

Ou vous pouvez ajouter le répertoire msbuild à votre chemin et sauter les lignes avec set et cd.

19
stevejoy32

Les deux réponses utilisent des chemins codés en dur, qui peuvent ne pas toujours fonctionner. Utilisez-le à la place:

@if exist "%VS100COMNTOOLS%vsvars32.bat" call "%VS100COMNTOOLS%vsvars32.bat"

Changement VS100 dans n'importe quelle autre version, vous pouvez également mettre ces lignes une par une pour prendre en charge plusieurs versions de VS simultanément:

@if exist "%VS100COMNTOOLS%vsvars32.bat" call "%VS100COMNTOOLS%vsvars32.bat"
@if exist "%VS140COMNTOOLS%vsvars32.bat" call "%VS140COMNTOOLS%vsvars32.bat"

Dans ce cas, vous ne dépendez plus d'une version spécifique de .Net Framework ou de Visual Studio

3
Archeg

Si vous ne voulez pas cd dans le répertoire d'installation de msbuild, vous pouvez également charger les variables d'environnement Visual Studio comme ceci:

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

(Voir aussi ceci Question )

2
Vertigo

Vous pouvez également ajouter le répertoire dans lequel se trouve MSBuild.exe à la variable d'environnement PATH afin d'appeler msbuild n'importe où.

Donc, dans le fichier bat, cela peut ressembler à ceci:

cd C:\PathToSoultion\
msbuild TheSolutionName.sln /p:configuration=debug
pause

Je sais que la question est déjà dans des années, mais j'espère que cela pourrait aider quelqu'un.

2
johnsabre