构建时,命令副本退出代码4 - Visual Studio重新启动解决了它

Mar*_* Ek 146 visual-studio

我不时在这里构建我的解决方案(其中包含7个项目)我在Visual Studio 2010 Premium ed中得到了可怕的'命令副本退出代码4'错误.

这是因为后期构建事件无法通过.

这是暂时解决问题的方法

  • 有时:重新启动Visual Studio,我就能构建解决方案
  • 有时:重启Visual Studio和我选择的文件管理器(Q-Dir 4.37)都解决了这个问题.

以下是构建后事件的样子:

xcopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)" /Y
Run Code Online (Sandbox Code Playgroud)

当您使用代码[插入值]错误退出命令副本时,通常会出现以下情况:

  • 读/写权限
  • 遗失的文件
  • 错误的目录

然而 - 显然有时我构建解决方案时,没有问题.

仅供参考,两周前我卸载了ReSharper 5.1.1,Visual Studio从那时起就给了我一些错误(其中无法调试).我重新安装了Visual Studio,从那以后它运行得更好,但仍然遇到了这个问题.它可能与某些ReSharper的某些东西有关吗?

你有同样的问题并解决了吗?或者你有任何可能的解决方案吗?

干杯.

小智 194

虽然/C可能会忽略错误,但它可能不是真正的解决方案,因为可能存在必须复制的文件才能使构建成功.

最常见的问题是预定义命令标记(例如$TargetDir)周围缺少引号.当一个人在代码或TFS中创建各种分支和路径时,很有可能发生这种情况.

有时如果文件是只读的,它也会引起问题.添加/R选项以允许复制只读文件.您可以在以下位置找到可用选项列表:

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/xcopy.mspx?mfr=true

另一个可能的问题是无法访问基础文件夹.如果是这样,尝试执行"start xcopy"而不是"xcopy".这将打开另一个命令窗口,但使用admin priveleges.

  • 'start'为我修复了...来自其他论坛这似乎是一个'开始'解决的权限问题,即使目标在我的盒子上有'Everyone'的FullControl.此外,您可以运行'start/MIN xcopy ...'以最小化窗口闪烁 (52认同)
  • 我将c:\ windows\system32\xcopy.exe $(TargetPath)<目标路径>更改为c:\ windows\system32\xcopy.exe"$(TargetPath)"<目标路径>并且在过去的50+中没有任何问题建立. (2认同)
  • 我使用了“$(OutDir)$(TargetFileName)”,将其更改为“$(TargetPath)”可以解决问题。就像使用“开始”一样! (2认同)

Pre*_*gha 74

我总是发现这是一个文件锁定问题.代码4是无法访问文件.我找到的一个部分解决方案是使用/ C选项进行xcopy(在出错时继续).不是真正的解决方案,但主要是它已经阻止了我的构建失败.

另一种仅适用于32位的解决方案是使用解锁工具在复制之前释放文件上的窗口句柄.

编辑:我刚刚意识到它也可以在64位下工作.

  • 我在上面的xcopy命令中添加了/ C选项,并且构建成功了.谢谢!Unlocker有时非常宝贵. (3认同)
  • 您指向的这个解锁器被几乎所有东西都检测为病毒.(谷歌安全浏览东西,eset,virustotal ......).似乎是在这里讨论它http://www.cnet.com/forums/discussions/unlocker-contains-malware-558941/ (3认同)
  • 我有这个问题,因为其中一个文件是只读的.一旦我改变了它,它就有效了. (2认同)

Val*_*roM 19

我越过了同样的错误,但这不是因为文件被锁定,而是文件丢失了.

VS尝试复制不存在的文件的原因是由于Post-build事件命令.

在我清除之后,问题解决了.

更新:

正如@rhughes评论的那样:

真正的问题是如何让命令在这里工作,而不是删除它.

他是绝对正确的.

在此输入图像描述


ElG*_*ooo 9

我也遇到过这个问题.请在错误窗口中仔细检查结果.

在我的情况下,拖尾\正在崩溃xcopy(因为我正在使用$(TargetDir)).就我而言$(SolutionDir)..\bin.如果您正在使用任何其他输出,则需要进行调整.

另请注意start xcopy,如果编译后错误消失,则无法解决问题.它可能刚刚被命令行压制,实际上没有文件被复制过!

您可以在命令shell中手动执行xcopy命令.在那里执行它们时,您将获得更多详细信息,指向正确的方向.


akk*_*a16 6

如果post build事件包含用于将构建输出复制到某个目录的copy/xcopy命令(通常是最常见的构建后操作),如果源或目标目标的完整目录路径包含包含的文件夹名称,则可能会出现此问题空间.删除目录名称的空间,然后尝试.


小智 5

正如许多网站所提到的,这有很多原因.对我来说,这是由于源和目的地的长度(路径长度).我在命令提示符下尝试了xcopy,我无法输入完整的源和路径(在某些字符之后它不允许您键入).然后我减少了路径长度并且能够运行.希望这可以帮助.


小智 5

这可能在多种情况下发生:

  1. 当完整字符串路径超过 254 个字符时。
  2. 当要复制的文件名错误时。
  3. 当目标路径错误时。
  4. 当复制的文件或目标文件夹设置只读属性时。