/ / Batch Scripting - dump la sortie msbuild dans un fichier spécifique au lieu de la fenêtre de la console en cas de succès? - msbuild, traitement des erreurs, fichier de commandes, commande, invite de commande

Script par lots - dump la sortie msbuild dans un fichier spécifique plutôt que dans la fenêtre de la console en cas de succès? - msbuild, traitement des erreurs, fichier de commandes, commande, invite de commande

Je ne sais pas comment faire cela. J'ai un fichier de script batch que j'utilise pour effectuer plusieurs appels msbuild. Je ne veux pas que la sortie de msbuild pollue la fenêtre de commande, mais au lieu de cela, elle sera transférée dans un fichier journal. Je ne sais pas comment faire cela, mais voici mon script:

@ECHO Building shared libraries ...

msbuild "SharedLibraries.sln"
:: Not sure how to catch an unsuccessful build here for my GOTO ERROR?
:: Copy dll files to specific location

@ECHO Building primary application...

msbuild "Myapp.sln"
:: Not sure how to catch an unsuccessful build here for my GOTO ERROR?

:ERROR

Alors, comment puis-je:

  1. Dump de la sortie msbuild dans un fichier journal?
  2. Catch builds infructueux et aller à l'étiquette d'erreur?

Réponses:

10 pour la réponse № 1

Ajouter le /fileLogger commutateur de ligne de commande oblige MSBuild à écrire la sortie de la construction dans un fichier msbuild.log dans le répertoire en cours, tandis que le /noconsolelogger Ce commutateur empêche MSBuild d’écrire sur la sortie standard. Le nom de fichier peut être défini en utilisant le /flpcommuter comme dans l'exemple suivant:

msbuild "SharedLibraries.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=buildlog.txt

Voir Référence de ligne de commande MSBuild pour plus de détails.

Concernant votre deuxième question MSBuild retourne un code de sortie non nul si la construction échoue, ce qui peut être traité comme d'habitude:

msbuild "SharedLibraries.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=SharedLibraries.log
if not errorlevel 0 goto ERROR

msbuild "Myapp.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=Myapp.txt
if not errorlevel 0 goto ERROR

:ERROR