当Visual Studio告诉我“用代码4退出xcopy”时出了什么问题
我对构build后的事件不是很熟悉,所以我对我的程序出了什么问题感到有点困惑。 在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.
该程序似乎运行良好,尽pipe这个错误,但我不想忽略这个问题,并希望没有什么不好的事情发生。 奇怪的是,这一行起初只是一个命令(第一个xcopy),但随着我继续编译项目(修复其他问题,主要是引用),错误信息越来越大。 任何想法可能会发生什么?
编辑:这是postbuild事件似乎失败 –
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意味着“ 发生了初始化错误,没有足够的内存或磁盘空间,或者在命令行上input了无效的驱动器名称或无效的语法。
它看起来像Visual Studio提供无效的参数到xcopy。 通过“ Project Properties > Right Click > Build Events > Post Build Event
。
请注意,如果$(ProjectDir)
或类似的macros术语在展开后的结果path中有空格,那么它们将需要用双引号括起来。 例如:
xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
将watch选项卡切换到“输出”并查找xcopy命令。 有时在这里你会发现更多的信息(实际的xcopy输出)可以帮助你解决问题。 如果您没有看到输出选项卡,请使用“查看输出”菜单进行显示。
除了接受的答案之外,当目标文件夹是只读的时候也可能发生错误(使用TFS时是通用的)
如果源文件未find, xcopy也会返回错误代码4 。
正如其他答案解释, 退出代码4可能有很多原因。
我注意到一个情况, 结果path名超过了允许的最大长度 (就像这里一样)。
我已经通过robocopyreplace了受影响的构build后事件的xcopy; robocopy似乎处理略有不同的path,并能够完成xcopy无法处理的复制任务。
当xcopy命令试图覆盖只读文件时,收到“ 退出代码4 ”错误。 我设法通过将/ R添加到xcopy命令来解决此问题。 / R表示只读文件应该被覆盖
旧命令:
XCOPY /E /Y "$(ProjectDir)source file" "destination"
新的命令
XCOPY /E /Y /R "$(ProjectDir)source file" "destination"
这意味着 :
发生初始化错误。 没有足够的内存或磁盘空间,或者在命令行上input了无效的驱动器名称或无效的语法。
所以基本上可以是任何事情哈哈…尝试从命令提示符一次运行一个命令,以找出哪个部分的命令给你麻烦。
我和消息一起得到了这个
驱动器规格无效
当复制到networking共享没有指定驱动器名称,例如
xcopy . \\localhost
哪里
xcopy . \\localhost\share
预计
在我的情况下,这个问题是由于不正确的构build顺序。 一个项目对构build后事件有一个xcopy命令,用于将文件从bin文件夹复制到另一个文件夹。 但是由于不正确的依赖关系,在xcopy正在进行时,新文件正在bin文件夹中创build。
在VS中右键单击你有生成后事件的项目。 转到生成依赖项>项目依赖项,并确保其正确。 validation项目构build顺序(下一个选项卡依赖项)。
我碰到这个问题,所以我从命令行运行xcopy命令,它说:
File creation error - The requested operation cannot be performed on a file with a user-mapped section open.
这实际上是Visual Studio持有的东西。 我刚刚重新启动Visual Studio,它的工作。