сбой msbuild при успешном коде выхода robocopy

#msbuild #robocopy

#msbuild #robocopy

Вопрос:

Мой сценарий msbuild завершается с ошибкой, даже если копирование файлов выполнено успешно. Если код выхода команды robocopy < 8, это означает, что файлы скопированы. Итак, как я могу сказать сценарию msbuild IgnoreExitCode, если код выхода <8? Я установил IgnoreExitCode в значение true, но что, если это настоящая ошибка?

 <Exec Command="robocopy  $(SourceDir) $(DestinationDir) /mir /mt /xd $(ExcludeDir)" IgnoreExitCode="true" />
  

Ответ №1:

Используйте выходной параметр ExitCode задачи Exec и параметр ContinueOnError вместо IgnoreExitCode:

 <Exec ContinueOnError="True" Command="robocopy  $(SourceDir) $(DestinationDir) /mir /mt /xd $(ExcludeDir)">
   <Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
</Exec>
<Error Condition="$(ErrorCode) amp;> 8" Message="Robocopy failed"/>
  

Ответ №2:

Попробуйте это обходное решение:

 (robocopy  $(SourceDir) $(DestinationDir) /mir /mt /xd $(ExcludeDir)) ^amp; IF %ERRORLEVEL% LEQ 1 exit 0