web-dev-qa-db-fra.com

Comment obtenir la commande de génération de ligne de commande pour la solution VS?

C'est probablement facile, mais je suis bloqué: lorsque je crée une solution dans Visual Studio - comment extraire la ligne cmd exacte pour la commande de génération actuelle afin de pouvoir faire la même génération à partir de la console VisualStudio?

Dans la fenêtre de sortie, je peux voir les projets individuels dans les commandes de génération de solution, mais pas celui pour la solution entière.

Je suis sur VS2005.

Toute aide serait appréciée

28
JohnIdol

En plus de ce que @JohnIdol dit correctement, j'ai constaté que vous devez configurer un certain nombre de variables d'environnement VS. Je n'ai pas le nom du fichier de commandes devant moi, mais vous pouvez le modifier ou "je pense" l'utiliser. Il se trouve quelque part dans l'arborescence des fichiers du programme VS. De plus, si je me souviens bien, vous ne voulez pas être dans un shell standard mais un shell de configuration .NET pour certains chemins et autres. J'ajouterai des détails plus tard lorsque je serai sur un PC Windows avec VS.

EDIT: Le fichier batch mentionné est un raccourci dans le menu ProgFiles. Voici les détails de ses propriétés.

%comspec% /k ""C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat""x86"

Voici mon fichier batch, utilisant MSBuild pour appeler la solution.

@echo off

:: setup VS2005 command line build environment
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
set VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8\VC
set FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
set FrameworkVersion=v2.0.50727
set FrameworkSDKDir=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
set DevEnvDir=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Com
mon7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft
 Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual
 Studio 8\VC\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC
\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB

echo %0 %*
echo %0 %* >> %MrB-LOG%
cd
if not ""=="%~dp1" pushd %~dp1
cd
if exist %~nx1 (
        echo VS2005 build of '%~nx1'.
        echo VS2005 build of '%~nx1'. >> %MrB-LOG%
        set MrB-BUILDLOG=%MrB-BASE%\%MrB-WORK%.%MrB-NICEDATE%.%MrB-NICETIME%.build-errors.log
        msbuild.exe %~nx1 /t:Rebuild /p:Configuration=Release > %MrB-BUILDLOG%
        findstr /r /c:"[1-9][0-9]* Error(s)" %MrB-BUILDLOG%
        if not errorlevel 1 (
                echo ERROR: sending notification email for build errors in '%~nx1'.
                echo ERROR: sending notification email for build errors in '%~nx1'. >> %MrB-LOG%
                call mrb-email "Mr Build isn't happy about build errors in '%~nx1'" %MrB-BUILDLOG%
        ) else (
                findstr /r /c:"[1-9][0-9]* Warning(s)" %MrB-BUILDLOG%
                if not errorlevel 1 (
                        echo ERROR: sending notification email for build warnings in '%~nx1'.
                        echo ERROR: sending notification email for build warnings in '%~nx1'. >> %MrB-LOG%
                        call mrb-email "Mr Build isn't happy about build warnings in '%~nx1'" %MrB-BUILDLOG%
                ) else (
                        echo Successful build of '%~nx1'.
                        echo Successful build of '%~nx1'. >> %MrB-LOG%
                )
        )
) else (
        echo ERROR '%1' doesn't exist.
        echo ERROR '%1' doesn't exist. >> %MrB-LOG%
)
popd
15
kenny

Accédez à votre menu Programmes> Microsoft Visual Studio 2005> Outils Visual Studio> Invite de commandes Visual Studio 2005 .

cette invite de commande possède toutes les variables d'environnement .NET nécessaires définies pour la session de ligne de commande. Vous pouvez changer de répertoire pour votre répertoire de solution (par exemple c:\projects\mySolution) et exécuter

Msbuild.exe mySolution.sln

Vous pouvez voir les différentes options disponibles en utilisant msbuild /?

Msbuild se trouve dans C:\Windows\Microsoft.NET\Framework\v2.0.50727

En plus de msbuild /? vérification d'option rapide, vous pouvez référencer la page MSBuild Command Line Reference pour plus d'explications sur son utilisation. Et comment construire des cibles spécifiques dans les solutions .

25
icelava

Pour VS .NET 2003, vous pouvez utiliser devenv.exe pour créer la solution/le projet à partir de la ligne de commande.

devenv solutionfile.sln  /build solutionconfig

Par exemple. utilisation dans un fichier batch:

call "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"

devenv Tools.sln /build "Release"
7
Bejoy

Si vous souhaitez voir la ligne de commande exacte fournie par VS (plutôt que de la travailler), vous pouvez essayer de remplacer MSBuild.exe par votre propre application de console qui imprime tous les paramètres dans un fichier.

Vous pouvez également écrire toutes les variables d'environnement fournies pour vérifier celles que VS fournit en arrière-plan.

5
David Sykes

Je veux juste remercier le Bejoy pour l'exemple. J'ai eu de gros problèmes avec la reconstruction de la solution lors de la configuration de l'événement avant la construction, car ils ont supprimé la plupart des macros et cela m'a beaucoup aidé.

Voici ma solution basée sur Bejoy (considérant que le fichier .bat est situé dans le dossier racine d'installation qui fait partie de la solution):

call "%VS100COMNTOOLS%\vsvars32.bat"

devenv "%CD%\..\soulutionfile.sln" /build "Release"
4
crash

Vous pouvez démarrer msbuild à partir de la ligne de commande. msbuild comprend les fichiers .sln (solution). Vous pouvez spécifier le fichier .sln et la configuration de construction (débogage, version, etc.) à partir de la ligne de commande.

http://msdn.Microsoft.com/en-us/library/ms164311.aspx
Voici la documentation sur ce que vous pouvez faire avec msbuild. MSBuild.exe est installé avec le framework .net, pas avec visual studio. Vous pouvez le trouver dans c:\windows\Microsoft.net\framework\v3.5 (ou v2.0.50727)

J'ai cherché un peu et j'ai découvert que vous pouvez également créer une ligne de commande avec Visual Studio en utilisant devenv.exe/build, plus d'informations ici:
http://msdn.Microsoft.com/en-us/library/xee0c8y7 (VS.80) .aspx

3
Mendelt