Alguns projetos na solução do meu cliente têm um evento pós-compilação: xcopy
a saída da compilação para uma pasta específica. Isso funciona bem ao construir localmente. No entanto, no TeamCity, ocasionalmente consigo
xcopy [...] saiu com o código 2
Se eu usar regular copy
, ele sairá com o código 1. Espero que isso tenha algo a ver com bloqueios de arquivo, embora os arquivos específicos que estão sendo copiados não sejam os mesmos, talvez apenas bloqueando no diretório de destino compartilhado. Eu costumo /y
não solicitar a substituição de arquivos.
Por que isso falha no TeamCity, mas não localmente?
The user pressed CTRL+C to terminate xcopy
. Ele Ele.Respostas:
Mesmo se você fornecer o
/Y
switch com xcopy, ainda obterá um erro quando xcopy não souber se o que você está copiando é um arquivo ou um diretório. Este erro aparecerá como "saiu com o código 2". Ao executar o mesmo xcopy em um prompt de comando, você verá que o xcopy está solicitando uma resposta de arquivo ou diretório.Para resolver esse problema com uma construção automatizada, você pode enviar uma resposta predefinida com um tubo.
Para dizer que o que você está copiando é um arquivo, faça eco em
F
:Para dizer que o que você está copiando é um diretório, faça eco em
D
:Às vezes, o acima pode ser resolvido simplesmente usando um comando de cópia em vez de xcopy:
No entanto, se houver diretórios inexistentes que conduzam ao destino final do arquivo, ocorrerá uma "saída com o código 1".
Lembre-se: use o
/C
switch e o xcopy com cuidado.fonte
*
funcionará com diretórios também? Ou isso é apenas para arquivos?Corrigi o código de erro 2 adicionando um \ no final do meu caminho, sem ele, o xcopy pensará que é um arquivo em vez de uma pasta.
fonte
Se você estiver usando xcopy em um evento pós-compilação, use a opção / Y além de / C.
fonte
/Y
suprime o prompt! Por que isso foi tão difícil de encontrar?Minha correção para esse problema foi ir para a pasta bin de destino e garantir que a subpasta adequada existe lá. Depois que essa subpasta foi criada manualmente, o processo de construção foi concluído com êxito.
fonte
copy
consertou para mim.xcopy with /c /y
não funcionou. Eu estava pegando uma saída 4, então aceiteixcopy
, mas descobri que precisava de orçamentos($TargetPath)
.Meu roteiro:
fonte
Provavelmente você está usando TeamCity com git. Se sim, verifique se as pastas que você deseja copiar existem no repositório git. Normalmente git aviod adicionando pastas de projeto vazias ao repositório, então
xcopy
falha em encontrá-lo e gera um erro.Você pode adicionar algum arquivo de texto vazio a uma pasta vazia, confirmar e ver a pasta aparecer no repositório.
fonte