J'ai ajouté ceci pour les futurs visiteurs, car cette question est très active.
ROBOCOPY sort avec des "codes de succès" qui sont inférieurs à 8. Voir : http://support.microsoft.com/kb/954404
Cela signifie que :
robocopy exit code 0 = no files copied
robocopy exit code 1 = files copied
When the result is 1, this becomes an error exit code in visual studio.
J'ai donc résolu ce problème facilement en ajoutant ceci au bas du fichier batch
exit 0
Suggérer de traiter les erreurs ROBOCOPY de cette manière
rem each robocopy statement and then underneath have the error check.
if %ERRORLEVEL% GEQ 8 goto failed
rem end of batch file
GOTO success
:failed
rem do not pause as it will pause msbuild.
exit 1
:success
exit 0
La confusion s'installe lorsqu'aucun fichier n'est copié = aucune erreur dans VS. Puis, lorsqu'il y a des changements, les fichiers sont copiés, VS se trompe mais tout ce que le développeur voulait a été fait.
Conseil supplémentaire : N'utilisez pas de pause dans le script car cela deviendrait une pause indéfinie dans le build VS. Pendant le développement du script, utilisez quelque chose comme . timeout 10
. Vous le remarquerez et le commenterez plutôt que d'avoir une construction en suspens.
0 votes
Dans mon cas, la réponse que Tim Scott fournit vers la fin de cette page (donc je néglige le début) résout mon problème.