Algunos proyectos en la solución de mi cliente tienen un evento posterior a la compilación: xcopy
el resultado de la compilación en una carpeta específica. Esto funciona bien cuando se construye localmente. Sin embargo, en TeamCity, ocasionalmente obtengo
xcopy salió con el código 2
Si utilizo regular copy
, sale con el código 1. Espero que esto tenga algo que ver con los bloqueos de archivos, aunque los archivos específicos que se copian no son los mismos, por lo que tal vez solo bloquee el directorio de destino compartido. Yo suelo /y
no preguntar sobre la sobrescritura de archivos.
¿Por qué esto falla en TeamCity pero no localmente?
The user pressed CTRL+C to terminate xcopy
. Jeje.Respuestas:
Incluso si proporciona el
/Y
conmutador con xcopy, seguirá recibiendo un error cuando xcopy no sepa si lo que está copiando es un archivo o un directorio. Este error aparecerá como "salido con el código 2". Cuando ejecuta el mismo xcopy en un símbolo del sistema, verá que xcopy solicita una respuesta de archivo o directorio.Para resolver este problema con una compilación automática, puede hacer eco en una respuesta predefinida con una tubería.
Para decir que lo que está copiando es un archivo, haga eco en
F
:Para decir que lo que está copiando es un directorio, haga eco en
D
:A veces, lo anterior se puede resolver simplemente usando un comando de copia en lugar de xcopy:
Sin embargo, si no hay directorios que conduzcan al destino del archivo final, se producirá un "salida con el código 1".
Recuerde: use el
/C
interruptor y xcopy con precaución.fuente
*
funcionará también con directorios? ¿O es esto solo para archivos?Arreglé el código de error 2 agregando un \ al final de mi ruta, sin él, xcopy pensará que es un archivo en lugar de una carpeta.
fuente
Si está utilizando xcopy en un evento posterior a la compilación, use el modificador / Y además de / C.
fuente
/Y
suprime el mensaje! ¿Por qué fue tan difícil de encontrar?Mi solución para este problema fue ir a la carpeta bin de destino y asegurarme de que exista la subcarpeta adecuada allí. Una vez que esa subcarpeta se creó manualmente, el proceso de compilación se completó correctamente.
fuente
copy
lo arregló para mí.xcopy with /c /y
no funcionó. Estaba obteniendo una salida 4, así que seguíxcopy
, pero resultó que necesitaba cotizaciones($TargetPath)
.Mi guión:
fuente
Probablemente estés usando TeamCity con git. Si es así, verifique que las carpetas que desea copiar existan en el repositorio de git. Por lo general, git aviod agrega carpetas de proyectos vacías al repositorio, por lo que
xcopy
no lo encuentra y genera un error.Puede agregar un archivo de texto vacío a una carpeta vacía, confirmar y ver que la carpeta aparece en el repositorio.
fuente