No estoy muy familiarizado con los eventos posteriores a la compilación, por lo que estoy un poco confundido sobre lo que está mal con mi programa. Al compilar en Visual Studio 2010, obtengo lo siguiente:
The command "xcopy C:\Users\Me\Path\Foo.bar\Library\dsoframer.ocx C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\Foo.bar\ApplicationFiles C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\url\ C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
rmdir /S /Q C:\Users\Me\Path\Foo.bar\bin\Debug\.gwt-tmp" exited with code 4.
El programa parece funcionar bien, a pesar de este error, pero no quiero ignorar este problema y espero que no pase nada malo. Curiosamente, esta línea comenzó como un solo comando (la primera xcopy) pero a medida que continué compilando el proyecto (solucionando otros problemas, principalmente referencias), el mensaje de error se expandió cada vez más. ¿Alguna idea de lo que podría estar pasando?
Editar: Aquí están los eventos posteriores a la construcción que parecen estar fallando:
xcopy $(ProjectDir)Library\dsoframer.ocx $(TargetDir) /Y /E /D
xcopy $(ProjectDir)ApplicationFiles $(TargetDir) /Y /E /D
xcopy $(SolutionDir)com.myUrl.gwt\www $(TargetDir) /Y /E /D
rmdir /S /Q $(TargetDir).gwt-tmp
c#
visual-studio-2010
visual-studio-2012
xcopy
Soñador cuervo
fuente
fuente
Administrator privileges
. Copiar a ubicaciones específicas requiere derechos de administrador.Respuestas:
El código de salida Xcopy 4 significa "Se produjo un error de inicialización. No hay suficiente memoria o espacio en disco, o ingresó un nombre de unidad o una sintaxis no válidos en la línea de comandos " .
Parece que Visual Studio está proporcionando argumentos no válidos para xcopy. Verifique su comando de evento posterior a la compilación a través de
Project > Right Click > Properties > Build Events > Post Build Event
.Tenga en cuenta que si los
$(ProjectDir)
términos macro o similares tienen espacios en las rutas resultantes cuando se expanden, entonces deberán estar entre comillas dobles. Por ejemplo:fuente
"command args"
).$(ProjectDir)
(y / o similar) tiene espacios en la ruta expandida, entonces tendrá que estar entre comillas. Por ejemplo:xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
Cambie la pestaña de vigilancia a "salida" y busque el comando xcopy. A veces, aquí encontrará un mensaje más (la salida real de xcopy) que podría ayudarlo a resolver el problema. Si no ve la pestaña de salida, use el menú Ver-Salida para mostrarla.
fuente
Además de la respuesta aceptada, el error también puede ocurrir cuando la carpeta de destino es de solo lectura (común cuando se usa TFS)
fuente
Si no se encuentra el archivo fuente, xcopy también devuelve el código de error 4 .
fuente
$(TargetDir)
que termina conRelease\
. El uso$(ProjectDir)\bin\Release
sin el arrastre\\
trabajado para míRecibí el error ' salí con el código 4 ' cuando el comando xcopy intentó sobrescribir un archivo de solo lectura. Logré resolver este problema agregando / R al comando xcopy. El / R indica que los archivos de solo lectura deben sobrescribirse
antiguo comando:
nuevo comando
fuente
Como explican otras respuestas, el código de salida 4 puede tener muchas causas.
Noté un caso, donde los nombres de ruta resultantes excedieron la longitud máxima permitida (al igual que aquí ).
He reemplazado xcopy por robocopy para el evento posterior a la creación afectado; robocopy parece manejar rutas ligeramente diferentes y pudo completar la tarea de copia que xcopy no pudo manejar.
fuente
Significa :
Así que, básicamente, podría ser casi cualquier cosa jaja ... intente ejecutar el comando uno a la vez desde el símbolo del sistema para averiguar qué parte de ese comando le está causando problemas.
fuente
Recibí esto junto con el mensaje
al copiar a un recurso compartido de red sin especificar el nombre de la unidad, por ejemplo
dónde
era de esperarse
fuente
Me encontré con este problema, así que ejecuté el comando xcopy desde la línea de comando y dijo:
En realidad, era Visual Studio aferrado a algo. Acabo de reiniciar Visual Studio y funcionó.
fuente
En mi caso, el problema se debió a un orden de compilación incorrecto. Un proyecto tenía un comando xcopy en eventos posteriores a la compilación para copiar archivos de la carpeta bin a otra carpeta. Pero debido a dependencias incorrectas, se crearon nuevos archivos en la carpeta bin mientras xcopy está en progreso.
En VS, haga clic derecho en el proyecto donde tiene eventos posteriores a la compilación. Vaya a Construir dependencias> Dependencias del proyecto y asegúrese de que sea correcto. Verifique también el orden de compilación del proyecto (próxima pestaña a las dependencias).
fuente
Este error se debe a si hay espacios en blanco donde se copia su repositorio. Por ejemplo, mi proyecto se copia en la ubicación a continuación,
c://projects/My rest project
entonces puede ver los espacios en blanco allí, si cambia su ruta de repositorio a continuación, debería funcionarc://projects/myrestproject
fuente
Yo tuve el mismo problema. También puede verificar en qué dirección apunta la barra inclinada. Para mí funcionó usar barra diagonal inversa, en lugar de barra diagonal. Ejemplo
En vez de:
fuente
Tenía un comando posterior a la compilación que funcionaba bien antes de hacer una actualización en VS 2017. Resultó que las herramientas del SDK se actualizaron y estaban bajo una nueva ruta, por lo que no pude encontrar la herramienta que estaba usando para firmar mis ensamblajes.
Esto cambió de esto ...
A esto...
Cambio muy sutil pero que rompe, así que revisa tus rutas después de una actualización si ves este error.
fuente
Otra cosa a tener en cuenta es la doble barra diagonal inversa, ya
xcopy
que no los tolera en el parámetro de la ruta de entrada (pero sí los tolera en la ruta de salida ...).fuente
Si alguna otra solución está en el modo de depuración, primero deténgalas todas y luego reinicie el estudio visual. Funcionó para mi.
fuente
Esto también puede ocurrir si la carpeta de destino es utilizada por otros procesos . Cierre todos los programas que pueden usar la carpeta de destino e intente.
Puede usar el monitor de recursos (herramienta de Windows) para verificar los procesos que usan su carpeta de destino.
¡Esto funcionó para mí!
fuente