Вопрос:

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

c# visual-studio-2010 visual-studio-2012 xcopy

159660 просмотра

13 ответа

3599 Репутация автора

Я не очень знаком с событиями после сборки, поэтому я немного смущен тем, что происходит с моей программой. При компиляции в 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
Автор: Raven Dreamer Источник Размещён: 11.04.2011 07:37

Ответы (13)


5 плюса

7106 Репутация автора

Это значит :

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

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

Автор: BrandonZeider Размещён: 11.04.2011 07:40

156 плюса

86834 Репутация автора

Решение

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

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

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

xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
Автор: Mark Cidade Размещён: 11.04.2011 07:40

33 плюса

27083 Репутация автора

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

Автор: Felice Pollano Размещён: 11.04.2011 07:54

29 плюса

1222 Репутация автора

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

Автор: Pieter Размещён: 16.05.2013 08:23

17 плюса

3607 Репутация автора

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

Автор: Der_Meister Размещён: 16.01.2014 06:21

8 плюса

1811 Репутация автора

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

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

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

Автор: CodeFox Размещён: 02.02.2014 11:32

3 плюса

31238 Репутация автора

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

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

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

xcopy . \\localhost

где

xcopy . \\localhost\share

ожидалось

Автор: Thomas Weller Размещён: 15.09.2015 02:23

10 плюса

1040 Репутация автора

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

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

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

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

XCOPY /E /Y /R "$(ProjectDir)source file" "destination"
Автор: martijn Размещён: 24.03.2016 11:48

1 плюс

1593 Репутация автора

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

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

Автор: sree Размещён: 31.08.2016 06:40

1 плюс

2392 Репутация автора

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

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

Это была фактически Visual Studio, держащая что-то. Я только что перезапустил Visual Studio, и это сработало.

Автор: NielW Размещён: 13.09.2017 08:38

0 плюса

49 Репутация автора

У меня такая же проблема. Вы также можете проверить, куда указывает косая черта. Для меня это работало, чтобы использовать обратную косую черту вместо прямой косой черты. пример

xcopy /s /y "C:\SFML\bin\*.dll" "$(OutDir)"

Вместо:

xcopy /s /y "C:/SFML/bin/*.dll" "$(OutDir)"
Автор: Marc Dirven Размещён: 11.12.2018 04:07

0 плюса

729 Репутация автора

У меня была команда посткомпоновки, которая прекрасно работала до того, как я обновил VS 2017. Оказалось, что инструменты SDK обновлены и находились под новым путем, поэтому он не смог найти инструмент, который использовал для подписи своих сборок.

Это изменилось с этого ....

call "%VS140COMNTOOLS%vsvars32"
    "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\sn.exe" -Ra "$(TargetPath)" "$(ProjectDir)Key.snk"

К этому...

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\sn.exe" -Ra "$(TargetPath)" "$(ProjectDir)Key.snk"

Очень тонкое, но серьезное изменение, поэтому проверяйте свои пути после обновления, если видите эту ошибку.

Автор: Fütemire Размещён: 15.01.2019 06:31

0 плюса

534 Репутация автора

Еще одна вещь , чтобы следить за это двойные обратные косые, так как xcopyне переносит их в параметре ввода пути (но это действительно переносит их в выходной тракт ...).

введите описание изображения здесь

Автор: Elaskanator Размещён: 16.01.2019 06:55
Вопросы из категории :
32x32