Cada ahora y entonces, cuando voy a construir mi solución aquí (con 7 proyectos en ella) llego el temido ‘Comando copiar terminó con código de 4’ error, en Visual Studio 2010 Premium ed.

Esto es debido a la generación posterior evento de no ser capaz de ir a través de.

Aquí es lo que soluciona el problema temporalmente,

  • A veces: Un reinicio de Visual Studio y soy capaz de construir la solución
  • A veces: Tanto un reinicio de Visual Studio y mi administrador de archivos de su elección (Q-Dir 4.37) soluciona.

Aquí está lo que el post-evento de generación parece:

xcopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)" /Y

Cuando recibe el comando copiar terminó con el código de [insertar el valor] de error, normalmente es debido a lo siguiente:

  • permisos de lectura /escritura
  • archivos que faltan
  • mal directorios

Sin embargo, obviamente, a veces cuando voy a construir la solución, no hay ningún problema.

Para su INFORMACIÓN, he desinstalado ReSharper 5.1.1 hace dos semanas y Visual Studio me ha dado algunos errores desde entonces (entre ellos el de no ser capaz de depurar). He re-instalado Visual Studio y es mejor trabajar desde entonces, pero sigue apareciendo este problema. Podría tener que ver con algunos ReSharper cosas de estar en algún lugar?

Ha tenido el mismo problema y lo soluciono? O ¿tiene alguna posible solución?

InformationsquelleAutor Martin S Ek | 2010-10-05

27 Comentarios

  1. 74

    He invariablemente encontrado que esto es un bloqueo de archivo de tema. Código 4 se Puede Acceder a Archivo. Una solución parcial que he encontrado es utilizar la opción /C para xcopy (que sigue en el error). No es realmente una solución, pero sobre todo se ha detenido mi construye a partir de la falta.

    Otra solución que sólo funciona en 32 bits es el uso de la unlocker herramienta para la liberación de controladores de windows en el archivo antes de la copia.

    Edit: me he dado cuenta de que funciona en 64 bits también.

    • He añadido la opción /C para arriba comando xcopy y la construcción de éxito. Gracias! Unlocker es de un valor incalculable, a veces.
    • Tuve este problema porque uno de los archivos de sólo lectura. Una vez que he cambiado que, funcionó.
    • También puedo dar fe de que este problema se resuelve mediante la eliminación de permiso de sólo lectura a los archivos no deseados. Tenemos una externa de la carpeta bin que estaba causando el problema descrito. Una vez que me quita el atributo de sólo lectura, el error fueron cuando tratando de construir la solución.
    • Puede alguien mostrar todo el xcopy..
    • Este unlocker que usted está apuntando a es detectado como un virus por todo. (google safe browse cosas, eset, virustotal…). parece ser una discusión sobre ella aquí cnet.com/forums/discussions/unlocker-contains-malware-558941
    • Recordar cuántos años esta respuesta. El virus está alegando en realidad parece ser ad ware cosas que ahora parece estar incluido en el en el instalador no el unlocker que el software en sí.
    • Si parece que funciona o no, esta es una pésima solución. Si un archivo está bloqueado, es generalmente cerrado por una razón. Probablemente alguna otra herramienta es todavía la escritura, así que si xcopy comando se ejecuta correctamente, puede haber copiado una pendiente o trunca archivo. El /C opción hace que el archivo no debe ser copiado en todo. Si que es aceptable, ¿por qué la generación posterior de paso, en primer lugar? La adecuada solución sería volver a intentar xcopy en caso de un error. Sin embargo, si el archivo es construir un archivo de salida, entonces esto probablemente debería también informó a Microsoft como un posible error.
    • esta respuesta fue escrito hace ya casi 10 años. En ese momento VS fue el bloqueo de archivos en formas que no debe hacer. Para las tecnologías que podría haber sido overkilll pero era una solución (principalmente porque tener un fix de microsoft en ese momento era muy difícil). Para los modernos utillaje es probable que este no es el caso.
    • Todavía existe el problema con el Visual Studio 2012 compilador, que es viejo, pero no de 10 años (todavía), y, lamentablemente, todavía en uso en un montón de proyectos por varias razones. Curiosamente, también me encontré con el problema creciente a la hora de actualizar desde una versión anterior de MSBuild a la actual (2019), así que creo que todavía es relevante. Y esto no cambia el hecho de que /C sólo omite los errores, que puede o puede no ser aceptable. Creo que al menos las personas que están considerando esta solución debe saber (y su respuesta lo dice, lo cual es bueno – por lo tanto, no downvote).

  2. 194

    Mientras /C puede ignorar los errores, que puede no ser la solución real, como podrían ser los archivos que se DEBEN copiar en la orden para la construcción para tener éxito.

    El problema más común es la falta de comillas alrededor de la pre-definido códigos de comando (como $TargetDir). Cuando uno crea diversas ramas y rutas de código o de TFS, hay una muy alta probabilidad de que esto ocurra.

    A veces, si el archivo es de sólo lectura, le causa problemas. Agregar el /R opción para permitir que sólo lectura de los archivos que se copian. Usted puede encontrar la lista de opciones disponibles en:

    http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/xcopy.mspx?mfr=true

    Otro posible problema es que la carpeta no se puede acceder. Si es así, tratar de realizar "start xcopy" en lugar de "xcopy". Se abrirá otra ventana de comandos, pero con admin priveleges.

    • ‘inicio’ arreglado para mí…en otros foros que este parece ser un problema de permisos que ‘inicio’ resuelve, aunque el destino ha FullControl para ‘Todos’ en mi caja. Además, puede ejecutar el » inicio /MIN xcopy…’ para minimizar la ventana de parpadeo
    • He cambiado c:\windows\system32\xcopy.exe $(TargetPath) <ruta de acceso de destino> a c:\windows\system32\xcopy.exe «$(TargetPath)» <ruta de acceso de destino> y no tienen problemas en los últimos 50+ construye.
    • He usado «$(OutDir)$(TargetFileName)», cambiarlo a «$(TargetPath)» se soluciona el problema. Como se hace el uso de ‘inicio’!
    • ‘inicio xcopy’ funcionó a la perfección para mí. Gracias.
    • inicio xcopy también ha resuelto mi problema.
    • Mi problema parece ser que viene de usar en el tablero de caracteres en uno de los padres nombre de la carpeta en lugar de guión. He cometido un error de copiar/pegar el nombre de la rama de la carpeta de la palabra, que era algo como «1234 – ABCD». Le cambió el nombre a «1234 – ABCD» y xcopy funciona bien ahora.
    • he quitado a mi carpeta de «readonly» opción. después de que funcionaba. gracias..
    • añadido start y /R, sólo en caso de que… no estoy seguro de que uno hizo el truco, pero funcionó! Gracias!
    • inicio xcopy también ha resuelto mi problema….. 🙂
    • inicio xcopy resuelto para mí esta vez. Thx.
    • Pulgares arriba para start xcopy
    • inicio xcopy funcionó, pero no entiendo por qué mi nueva asamblea, no se puede acceder sin ella
    • El uso de start más probable es que «funciona» porque se ejecuta el comando de forma asíncrona, por lo que trivialmente no falla, incluso si se produce un error con el tiempo. Simplemente desactiva el manejo de errores y, por tanto, tiene un efecto similar al de /C. Incluso si lo hace realmente ayuda, usted alféizar de no tener el control de errores, y no hay garantía de que la operación de copia terminado antes dependiente de proyectos de construcción.

  3. 19

    Crucé el mismo error, pero no es debido a que el archivo está bloqueado, pero falta el archivo.

    La razón por la que VS intentado copiar un archivo existente no, es porque el puesto de eventos de generación de comandos.

    Después me aclaró que, problema resuelto.

    ACTUALIZACIÓN:

    Como @rhughes comentó:

    El verdadero problema es cómo conseguir que el comando funcione, en lugar de a
    retire.

    y él es absolutamente correcto.

    Comando copiar terminó con código 4 cuando la construcción de Visual Studio reiniciar se soluciona

    • Si se copia un archivo durante la post-construcción, es probable que la razón es porque has entrado en un comando de aquí. El verdadero problema es cómo conseguir que el comando funcione, en lugar de eliminarlo.
    • Estoy de acuerdo con usted. por lo tanto he actualizado mi respuesta. Gracias
  4. 9

    También me he enfrentado a este problema.Vuelva a comprobar el resultado en la ventana de error.

    En mi caso, una de relaves \ se estrellaba xcopy (como yo estaba usando $(TargetDir)). En mi caso $(SolutionDir)..\bin. Si usted está utilizando cualquier otro tipo de salida, este debe ser ajustado.

    También tenga en cuenta que start xcopy no solucionarlo, si el error se ha ido después de la compilación. Podría haber sido suprimida por la línea de comandos y no hay ningún archivo ha sido copiado!

    Puede btw ejecutar manualmente su xcopy comandos en el shell de comandos. Usted obtendrá más detalles cuando la ejecución de ellos, apuntando en la dirección correcta.

    • El mismo que me pasó con los $(OutDir). Parece que todo el camino macros tienen un «\» al final y se cuelga xcopy
  5. 6

    En caso de que el post evento de compilación contiene copia/comando xcopy para copiar el resultado de la generación a algún directorio(que generalmente es la más común de post operación de construcción) el problema puede darse en el caso de la ruta completa del directorio, ya sea de origen o de destino de los destinos contienen los nombres de las carpetas que incluyen espacios. Quitar el espacio para el nombre del directorio(s) y probar.

  6. 5

    Como se ha mencionado en muchos sitios, hay varias razones para ello. Para mí fue debido a la longitud de Origen y de Destino (longitud de la Trayectoria). Traté de xcopy en el símbolo del sistema y yo era incapaz de tipo de la fuente completa y la ruta (después de algunos personajes que no permiten el mismo tipo). Entonces me reducción de la longitud de la ruta y fue capaz de ejecutar.
    Espero que esto ayude.

  7. 3

    Tengo este error porque la cuenta de usuario que TFS Build Servicio se ejecuta bajo el no tiene permisos de escritura a la carpeta de destino. Right-click on the folder-->Properties-->Security.

    • Felicitaciones a «Tangodancer» y / o «Abdul Rahman». Haga clic derecho en la carpeta–>Propiedades – >Seguridad resuelto el problema para mí en un solo XP SP3 sistema Gracias
  8. 3

    Ejecutar VS en el modo de Administrador y debería funcionar bien.

    • Estoy corriendo VS como Administrador, pero este no me funciona.
    • Algunos usuarios puede ejecutar en modo Administrador.
  9. 3

    Esto puede suceder en varios casos:

    1. Cuando la cadena completa ruta de acceso es más de 254 caracteres.
    2. Cuando el nombre del archivo a copiar está mal.
    3. Cuando la ruta de destino es incorrecto.
    4. Cuando el atributo de sólo lectura-se establece en el copiado de archivo o la carpeta de destino.
  10. 2

    Tengo este error debido a que el archivo fue abierto en otra instancia.

    cuando cerré el archivo y otra vez re-construir la solución, fue copiado correctamente.

  11. 2

    Me enfrentamos al mismo problema en el caso de XCOPY después de la compilación se lleva a cabo. En mi caso el problema estaba sucediendo, porque de SÓLO LECTURA el conjunto de permisos en las carpetas.

    He añadido attrib -R comando XCOPY y resolvió el problema.

    Espero que ayude a alguien!

  12. 2

    Tuve el mismo error con xcopy en conexión con el Motor de Prueba. Estoy utilizando visual studio Professional 2013. Por defecto, Prueba -> Configuración de Pruebas -> Mantener la Ejecución de las Pruebas de funcionamiento del Motor parece ser la razón de mi código de error 4 con xcopy. Apagar resuelto el problema. El motor de ejecución parece mantenga en algunos .los archivos dll.

  13. 1

    Yo tenía el mismo problema.
    Un simple ‘Limpia’ en el VS se borra el error, pero era una solución temporal.

    • Estoy recibiendo este problema y «Limpia» no me ayudó. ¿La «Solución Limpia» trabajar para usted en cada momento?
  14. 1

    Me encontré con que la configuración del archivo de Copia en el Directorio De Salida parámetro para Copiar Siempre parece haber aclarado el problema de bloqueo. Aunque ahora tengo 2 copias de los archivos y la necesidad de eliminar uno.

  15. 1

    Yo tenía el mismo problema. Sin embargo, nada funcionó para mí. He resuelto el problema mediante la adición de

    exit 0
    

    a mi código. El problema fue que mientras estaba haciendo la copia de los archivos, a veces el último archivo no se pudo encontrar, y el murciélago devuelve un valor distinto de cero.

    Espero que esto ayude a alguien!

  16. 1

    Si está ejecutando Windows 7 en adelante, usted puede probar el nuevo «robocopy’ comando:

    robocopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)"
    

    Obtener más información acerca de robocopy se puede encontrar aquí.

  17. 1

    Me enfrentaba a la misma cuestión.
    He eliminado el post a la generación de eventos y se comenzó a trabajar.
    Algunas veces, cuando se añaden algunos componentes de SQL puede agregar post comandos de compilación también.

  18. 1

    Yo estoy haciendo algo similar con un xcopy con el /excluir opción. En mi caso, me encontré con que la edición de los post-evento de generación (algo inofensivo como un salto de línea después de que el comando) y guardar el proyecto, hace que el error ocurra. Volver a guardar el archivo especificado en la opción excluir hace que funcione de nuevo.

  19. 1

    Como estoy escribiendo un archivo DLL de la biblioteca he utilizado el comando xcopy para copiar la biblioteca donde el programa puede encontrar y cargar. Después de varias horas de apertura y cierre del programa no era todavía un proceso abierto de ella en el taskmanager que no me reconoció.

    Aspecto para cualquier proceso en el cual la podrá utilizar el archivo y ciérrelo.

  20. 1

    Lo que fija para mí:
    cave para la solución específica para el proyecto en el que me quiere.e NO la solución general de archivo para todos los proyectos.

    Trate de hacer – he intentado todo lo demás que se mencionan aquí, pero fue en vano.

  21. 1

    No veo nada aquí que sugiera que esto es una web-app, pero me han experimentado este problema yo tengo dos xcopy de comandos en un evento posterior a la generación y sólo uno de ellos estaba fallando. Algo había un bloqueo en el archivo, y no era de Visual Studio (como he tratado de reiniciar.)

    La única otra cosa que habría utilizado el archivo dll construí mi IIS. Y he aquí que,

    Un simple iisreset hizo el truco para mí.

  22. 1

    He tenido el mismo problema.
    Fue causada por tener la misma bandera dos veces, por ejemplo:

    si $(ConfigurationName) == Liberación (xcopy «$(TargetDir).» «$(SolutionDir)Implementación\$(Nombreproyecto)\» /e /d /i /y /e)

    Observar que el «/e» bandera aparece dos veces. La eliminación de los duplicados resuelto el problema.

  23. 1

    En mi caso mi $(OutDir) era simplemente ..\..\Build\ es decir, algunas de ruta de acceso relativa. Y, cuando yo estaba tratando de xcopy de la siguiente manera
    xcopy /y "$(OutDir)Proj1.dll" "Anypath\anyfolder\" Me estaba poniendo el código de salida de error 4.

    Lo que está sucediendo, este comando estaba recibiendo ejecutado en el $(OutDir) (en mi caso la carpeta de compilación) y no en el directorio donde el archivo csproj de que el proyecto se encuentra (como normalmente se espera). Por lo tanto, yo seguía recibiendo File not found de error (correspondiente a la salida de código 4).

    Yo no podía entender esto hasta que me escribió cd en el Post la generación de eventos, para imprimir el directorio en el que este estaba recibiendo ejecutado en.

    Así que, para resumir, si estamos deseando copy /xcopy archivos de la $(OutDir), utilice "$(TargetDir)" (que es la ruta de acceso completa del directorio de salida) o no necesita especificar ningún camino en absoluto.

  24. 0

    Puede ser causada por VMWare Workstation con Carpetas Compartidas

    Tengo el problema de siempre cuando el destinatinon carpeta de la xcopy también se asigna como Carpeta Compartida en una máquina virtual.

    He resuelto con un script que se ejecuta en la máquina virtual y eliminar el contenido de la carpeta compartida.

  25. 0

    Para ampliar rhughes respuesta,

    El robocopy funciona de maravilla, sólo en caso de que usted necesita para incluir subdirectorios puede utilizar /e incluir subs y copiar los directorios vacíos o /s incluir subs excluyendo los directorios vacíos.

    También robocopy informe de un par de cosas como si los nuevos archivos se han copiado, esto hará que VS a quejarse ya que cualquier cosa por encima de 0 es un fracaso y robocopy devolverá 1 si los nuevos archivos se han encontrado. Vale la pena mencionar que robocopy primero se compara el Origen/Destino y sólo copias de la actualización o de archivos.

    Para conseguir alrededor de este uso:

    (robocopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)") ^& IF %ERRORLEVEL% LEQ 4 exit /B 0
    
  26. 0

    Si usted está aquí porque su proyecto no se puede crear en un servidor de compilación, pero construye la multa «manualmente» en un dev de la máquina, y usted está haciendo xcopy sólo para la depuración y para emular un entorno de producción en un dev de la máquina, entonces usted puede desear mirar en esta solución:

    https://stackoverflow.com/a/1732478/2279059

    Simplemente apague post a la generación de eventos en el servidor de compilación utilizando

    msbuild foo.sln /p:PostBuildEvent=
    

    Esto no es suficiente si tienes otro post de la generación de eventos que también deba ejecutar en el servidor de compilación, y no es una solución general. Sin embargo, dado que hay muchas causas diferentes de este problema, no puede ser una solución general. Una de las muchas respuestas a esta pregunta (y sus duplicados) probablemente va a ayudar, pero ten cuidado con los enfoques que sólo alguna manera de eludir el manejo de errores (como xcopy /C). Aquellos que pueden trabajar para usted, especialmente también en el servidor de generación de los escenarios, pero creo que este es el más fiable, SI se puede utilizar.

    También se ha sugerido que con las nuevas versiones de Visual Studio, el problema ya no existe, así que si usted está utilizando una versión antigua, considere la actualización de sus herramientas de construcción.

  27. 0

    Código de Error 4 puede significar un montón de cosas, así que recomiendo la lectura de las otras respuestas hasta encontrar una solución que funcione para usted Y usted entender por QUÉ funciona (algunas sólo las soluciones de deshabilitar el manejo de errores, que sólo puede enmascarar el problema, pero no resolverlo).

    Este puede ser un archivo de bloqueo problema relacionado con el paralelo de construcción. Una solución es no utilizar en paralelo edificio. Este es el comportamiento por defecto, pero si usted está utilizando el -m opción, a continuación, los proyectos serán construidos en paralelo. Las siguientes variaciones no deben generar proyectos en paralelo, de modo que usted no podrá ejecutar en el problema de bloqueo de archivo.

    msbuild -m:1
    msbuild -maxcpucount:1
    msbuild
    

    Tenga en cuenta que, contrariamente a lo que se ha dicho aquí, esto sucede incluso con la «última» versión de MSBuild (de Construir Herramientas para Visual Studio 2019).

    La mejor solución es, probablemente para asegurarse de que usted no necesita copiar archivos en una generación posterior de paso. En algunas situaciones, usted también puede desactivar la generación posterior de pasos cuando se construye con MSBuild en un servidor de compilación: https://stackoverflow.com/a/55899347/2279059

Dejar respuesta

Please enter your comment!
Please enter your name here