Несколько проектов в моем клиентском решении имеют событие после сборки: xcopy
вывод сборки в определенную папку. Это отлично работает при локальном строительстве. Однако в TeamCity я иногда получаю
xcopy [...] завершился с кодом 2
Если я использую обычный copy
, он завершается с кодом 1. Я ожидаю, что это как-то связано с блокировками файлов, хотя конкретные копируемые файлы не совпадают, поэтому, возможно, просто заблокируйте общий каталог назначения. Я использую, /y
чтобы не запрашивать перезапись файлов.
Почему это не удается в TeamCity, но не локально?
The user pressed CTRL+C to terminate xcopy
. Хе-хе.Ответы:
Даже если вы предоставите
/Y
переключатель с помощью xcopy, вы все равно получите сообщение об ошибке, если xcopy не знает, является ли то, что вы копируете, файлом или каталогом. Эта ошибка будет отображаться как «завершена с кодом 2». Когда вы запустите тот же xcopy в командной строке, вы увидите, что xcopy запрашивает ответ файла или каталога.Чтобы решить эту проблему с помощью автоматизированной сборки, вы можете отобразить заранее определенный ответ с конвейером.
Чтобы сказать, что вы копируете файл, введите эхо
F
:Чтобы сказать, что вы копируете каталог, повторите
D
:Иногда вышеуказанное можно решить, просто используя команду копирования вместо xcopy:
Однако, если есть несуществующие каталоги, ведущие к конечному месту назначения файла, то произойдет «выход с кодом 1».
Помните: используйте
/C
переключатель и xcopy с осторожностью.источник
*
работа с каталогами? Или это только для файлов?Я исправил код ошибки 2, добавив \ в конце моего пути, без него xcopy будет думать, что это файл, а не папка.
источник
Если вы используете xcopy в событии после сборки, используйте переключатель / Y в дополнение к / C.
источник
/Y
подавляет подсказку! Почему это было так сложно найти?Мое решение этой проблемы заключалось в том, чтобы перейти в целевую папку bin и убедиться, что там существует нужная подпапка. После того, как эта подпапка была создана вручную, процесс сборки завершился успешно.
источник
copy
исправил это для меня.xcopy with /c /y
не работает. У меня был выход 4, поэтому я пошелxcopy
, но оказалось, что мне нужны цитаты($TargetPath)
.Мой сценарий:
источник
Возможно, вы используете TeamCity с git. Если да, убедитесь, что папки, которые вы хотите скопировать, существуют в репозитории git. Обычно git aviod добавляет в репозиторий пустые папки проекта, поэтому
xcopy
не может их найти и выдает ошибку.Вы можете добавить пустой текстовый файл в пустую папку, зафиксировать и увидеть, как папка появится в репозитории.
источник