99 votes

Pourquoi une étape de post-construction (xcopy) de temps en temps sortir avec le code 2 dans un TeamCity construire?

Quelques projets à mon client la solution d'avoir un événement post-build: xcopy la sortie de la construction d'un dossier spécifique. Cela fonctionne bien lors de la construction à l'échelle locale. Cependant, TeamCity, j'ai parfois l'obtenir

xcopy [...] terminé avec le code 2

Si j'utilise régulièrement des copy, il sort avec le code 1. J'espère que cela a quelque chose à voir avec les verrous de fichier, les fichiers copiés sont pas les mêmes, donc peut-être juste de verrouillage sur le partage de répertoire de destination. J'utilise /y à ne pas inviter sur l'écrasement de fichiers.

Toutes les idées pour lesquelles il échoue dans TeamCity, mais pas localement? Une idée de comment résoudre ce problème?

158voto

Metro Smurf Points 14234

Même si vous fournir l' /Y interrupteur avec xcopy, vous aurez toujours une erreur lors de la commande xcopy ne sais pas si la chose vous êtes la copie d'un fichier ou d'un répertoire. Cette erreur s'affiche "terminé avec le code 2". Lorsque vous exécutez la même xcopy à l'invite de commande, vous verrez que xcopy demande une réponse de fichier ou de répertoire.

Pour résoudre ce problème avec un système automatisé, vous pouvez écho dans un pré-définis réponse avec un tuyau.

Pour dire la chose la copie d'un fichier, d'écho en F:

echo F|xcopy /y ...

Pour dire la chose que vous avez copié est un directoy, echo en D:

echo D|xcopy /y ...

Parfois, le ci-dessus peut être résolu en utilisant simplement une copie de la commande à la place de xcopy:

copy /y ...

Toutefois, s'il n'existe pas de répertoires jusqu'à la tenue du fichier de destination, puis "terminé avec le code 1" va se produire.

Rappelez-vous: utiliser l' /C interrupteur et xcopy avec prudence.

39voto

Benjiko99 Points 61

J'ai corrigé le code d'erreur 2 par l'ajout d'un \ à la fin de mon chemin, sans elle, xcopy pense que c'est un fichier au lieu d'un dossier.

34voto

DavidS Points 958

Si vous utilisez xcopy dans un événement post-construction utilisez le commutateur /Y en plus de l' /C.

/C           Continues copying even if errors occur.
/Y           Suppresses prompting to confirm you want to overwrite an existing file.

2voto

boomer57 Points 41

Mon correctif de ce problème a été d'aller dans la cible bin, et de s'assurer que le bon sous-dossier existe. Une fois ce sous-dossier est créé manuellement, le processus de construction est terminée avec succès.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X