Я добавил это для будущих посетителей, так как это довольно активный вопрос.
ROBOCOPY выходит с «кодами успеха», которые не достигают 8. См .: http://support.microsoft.com/kb/954404
Это означает, что:
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.
Так что я решил это легко, добавив это в конец командного файла
exit 0
Предложите обрабатывать ошибки ROBOCOPY таким образом
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
Путаница возникнет, когда файлы не будут скопированы = нет ошибок в VS. Затем, когда есть изменения, файлы копируются, ошибки VS, но все, что хотел разработчик, было сделано.
Дополнительный совет: не используйте паузу в скрипте, так как это станет неопределенной паузой в сборке VS. при разработке сценария используйте что-то вроде timeout 10
. Вы заметите это и закомментируете это вместо того, чтобы иметь зависшую сборку.