Что происходит не так, когда Visual Studio говорит мне «xcopy завершен с кодом 4» - PullRequest
112 голосов
/ 11 апреля 2011

Я не очень знаком с событиями после сборки, поэтому я немного смущен тем, что происходит с моей программой.При компиляции в 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 /Q C:\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

Ответы [ 13 ]

154 голосов
/ 11 апреля 2011

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

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

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

xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
31 голосов
/ 11 апреля 2011

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

29 голосов
/ 16 мая 2013

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

17 голосов
/ 16 января 2014

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

10 голосов
/ 24 марта 2016

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

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

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

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

XCOPY /E /Y /R "$(ProjectDir)source file" "destination"
8 голосов
/ 02 февраля 2014

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

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

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

5 голосов
/ 11 апреля 2011

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

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

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

3 голосов
/ 15 сентября 2015

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

Неверная спецификация диска

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

xcopy . \\localhost

где

xcopy . \\localhost\share

ожидалось

1 голос
/ 13 сентября 2017

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

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

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

1 голос
/ 31 августа 2016

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

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

...