当Visual Studio告诉我“xcopy退出代码为4”时,出了什么问题?

148

我对后期构建事件不是很熟悉,所以我的程序出了什么问题让我感到有点困惑。在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

3
除了下面的答案之外,还要确保使用“管理员权限”打开VS。将文件复制到特定位置需要管理员权限。 - Nikhil Agrawal
在我的情况下,我正在将文件复制到一个不存在的文件夹中。我创建了一个文件夹,然后-哇! - undefined
16个回答

2

我遇到了这个问题,所以我在命令行中运行了xcopy命令,它显示:

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

实际上是Visual Studio占用了某些资源。我只是重新启动了Visual Studio,然后它就正常工作了。


1

我有过同样的问题。你也可以检查斜杠指向的方向。对我来说,使用反斜杠而不是正斜杠有效。例如:

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

改为:

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

1
在我的情况下,问题是由于错误的构建顺序引起的。一个项目在后期构建事件中有一个xcopy命令,用于将文件从bin文件夹复制到另一个文件夹中。但由于依赖关系不正确,在xcopy正在进行时会创建新文件夹在bin文件夹中。
在VS中右键单击具有后期构建事件的项目。转到Build Dependencies> Project Dependencies并确保其正确。还要验证项目构建顺序(依赖项的下一个选项卡)。

0

我之前有一个后构建命令,在我更新了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"

非常微妙但是具有破坏性的更改,因此如果您看到此错误,请在更新后检查您的路径。

0
另一件需要注意的事情是双反斜杠,因为xcopy不允许在输入路径参数中使用它们(但它却允许在输出路径中使用...)。

enter image description here


0
如果其他解决方案处于调试模式,则首先停止它们,然后重新启动Visual Studio。这对我有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接