2009-03-03 6 views
1

J'essaie de générer plusieurs fichiers .sln dans un fichier batch. Tout fonctionne bien jusqu'à présent. J'essaie d'ajouter une vérification dans le fichier de commandes, donc si le nombre d'erreurs est supérieur à 0 alors le fichier de commandes cesse d'être exécuté et ne construit pas les fichiers .sln suivants. Comment puis je faire ça? Fondamentalement, quelque chose comme:Visual Studio, MS Build

msbuild test.sln (vérifier si l'erreur de construction> 0 arrêt) msbuild test2.sln

Répondre

4

MSBUILD établira la ERRORLEVEL, donc quelque chose le long des lignes de:

msbuild test.sln 
IF NOT ERRORLEVEL 0 exit 1 

Edit: Apparemment, il devrait être:

msbuild test.sln 
IF ERRORLEVEL 1 exit 1 
+0

"not errorlevel 0" est toujours faux, car "errorlevel 0" est toujours vrai. –

+2

Cela ne semble pas fonctionner pour moi. MSBuild renvoie toujours un niveau d'erreur de 0, qu'il y ait ou non des erreurs. – Phil

1
msbuild.exe test.sln 
if errorlevel 1 goto :errors 

msbuild.exe test2.sln 
if errorlevel 1 goto :errors 

:: ... 

:: Everything was fine. 
echo Build completed without errors. 
goto :eof 

:error 
echo Build failed. 
+0

Je ne suis pas sûr que ça renvoie toujours 1? Non 0 peut être plus prudent –

+1

si errorlevel 1 sera vrai si ERRORLEVEL est 1 ou _higher_: IF [NOT] ERRORLEVEL Numéro de commande numéro ERRORLEVEL une vraie condition si la dernière exécution du programme a renvoyé un code de sortie égal ou supérieur au nombre spécifié. –

1

À mon avis, il est beaucoup plus facile d'utiliser un fichier msbuild personnalisé ici et d'utiliser la tâche msbuild avec votre ensemble de solutions. Voir here pour les détails.

Questions connexes