Что происходит неправильно, когда Visual Studio сообщает мне, что «xcopy завершен с кодом 4»

Я не очень хорошо разбираюсь в событиях после сборки, поэтому я немного запутался в том, что происходит с моей программой. При компиляции в visual studio 2010 я получаю следующее:

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 /QC:\Users\Me\Path\Foo.bar\bin\Debug\.gwt-tmp" exited with code 4. 

Несмотря на эту ошибку, программа работает нормально, но я не хочу просто игнорировать эту проблему и надеюсь, что ничего плохого не произойдет. Как ни странно, эта строка начиналась как только одна команда (первая xcopy), но поскольку я продолжал компилировать проект (исправление других проблем, в основном ссылок), сообщение об ошибке расширялось все больше и больше. Любая идея, что может продолжаться?

Редактировать: Вот события постфайлов, которые, кажется, терпят неудачу –

 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 

    Код выхода Xcopy 4 означает « Произошла ошибка инициализации. Недостаточно памяти или места на диске, или вы ввели недопустимое имя диска или неверный синтаксис в командной строке ».

    Похоже, Visual Studio предоставляет недопустимые аргументы для xcopy. Проверьте команду события после сборки с помощью Project Properties > Right Click > Build Events > Post Build Event .

    Обратите внимание: если в результирующих путях в случае, если в $(ProjectDir) или подобных макросов есть пробелы, они должны быть заключены в двойные кавычки. Например:

     xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1 

    Переключите вкладку watch в «ouput» и найдите команду xcopy. Иногда здесь вы найдете еще несколько сообщений (фактический вывод xcopy), которые могут помочь вам решить проблему. Если вы не видите вкладку вывода, используйте меню «Просмотр-вывод», чтобы отобразить ее.

    В дополнение к принятому ответу ошибка также может возникать, когда папка назначения доступна только для чтения (Common при использовании TFS)

    Если исходный файл не найден, xcopy также возвращает код ошибки 4 .

    Я получил ошибку « exited with code 4 », когда команда xcopy попыталась перезаписать файл readonly. Мне удалось решить эту проблему, добавив / R в команду xcopy. Параметр / R указывает, что файлы только для чтения должны быть перезаписаны

    старая команда:

     XCOPY /E /Y "$(ProjectDir)source file" "destination" 

    новая команда

     XCOPY /E /Y /R "$(ProjectDir)source file" "destination" 

    Как объясняют другие ответы, код выхода 4 может иметь много причин.

    Я заметил случай, когда в результате имена путей превысили максимально допустимую длину (как здесь ).

    Я заменил xcopy на robocopy для затронутого события сборки сообщения; robocopy, похоже, обрабатывает несколько разных путей и выполнил задачу копирования, которую xcopy не смог обработать.

    Это означает :

    Произошла ошибка инициализации. Недостаточно памяти или места на диске, или вы ввели недопустимое имя диска или неверный синтаксис в командной строке.

    Таким образом, в основном это может быть почти все, что угодно … попробуйте запустить команду по одному из командной строки, чтобы выяснить, какая часть этой команды дает вам проблемы.

    Я получил это вместе с сообщением

    Недопустимая спецификация диска

    при копировании на сетевой ресурс без указания имени диска, например

     xcopy . \\localhost 

    где

     xcopy . \\localhost\share 

    ожидалось

    В моем случае проблема была вызвана неправильным порядком сборки. Один проект имел команду xcopy для событий после сборки, чтобы скопировать файлы из папки bin в другую папку. Но из-за неправильных зависимостей новые файлы создавались в папке bin, пока выполняется xcopy.

    В VS щелкните правой кнопкой мыши проект, в котором есть события после сборки. Перейдите в раздел «Зависимости построения»> «Зависимости проектов» и убедитесь, что он правильный. Проверьте порядок создания проекта (следующая вкладка на зависимости).

    Я столкнулся с этой проблемой, поэтому я запустил команду xcopy из командной строки и сказал:

     File creation error - The requested operation cannot be performed on a file with a user-mapped section open. 

    На самом деле Visual Studio держала что-то. Я только что перезапустил Visual Studio, и это сработало.