Visual studio 生成时命令副本已退出,代码为4-Visual Studio重新启动将解决此问题
每当我在这里构建解决方案(其中包含7个项目)时,就会在VisualStudio2010高级版中出现可怕的“命令副本退出,代码为4”错误 这是因为生成后事件无法通过 以下是暂时解决问题的方法Visual studio 生成时命令副本已退出,代码为4-Visual Studio重新启动将解决此问题,visual-studio,Visual Studio,每当我在这里构建解决方案(其中包含7个项目)时,就会在VisualStudio2010高级版中出现可怕的“命令副本退出,代码为4”错误 这是因为生成后事件无法通过 以下是暂时解决问题的方法 有时:重新启动VisualStudio,我就能够构建解决方案 有时:重启VisualStudio和我选择的文件管理器(Q-DIR4.37)都可以解决这个问题 以下是生成后事件的外观: xcopy "$(SolutionDir)Solution Items\References\*.dll" "$(Targ
- 有时:重新启动VisualStudio,我就能够构建解决方案
- 有时:重启VisualStudio和我选择的文件管理器(Q-DIR4.37)都可以解决这个问题
xcopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)" /Y
当您在代码[insert value]错误的情况下退出命令副本时,通常是因为以下原因:
- 读/写权限
- 丢失的文件
- 错误的目录
你有没有遇到同样的问题并解决了?或者您有什么可能的解决方案吗?我总是发现这是一个文件锁定问题。代码4无法访问文件。我发现的一个部分解决方案是为xcopy使用/C选项(错误时继续)。这并不是一个真正的解决方案,但主要是它阻止了我的构建失败 另一种仅适用于32位的解决方案是在复制之前使用该工具释放文件上的windows句柄
编辑:我刚刚意识到它也可以在64位下工作。虽然
/C
可能会忽略错误,但它可能不是真正的解决方案,因为可能需要复制文件才能成功构建
最常见的问题是预定义命令标记周围缺少引号(例如$TargetDir
)。当您在代码或TFS中创建各种分支和路径时,发生这种情况的可能性非常高
有时,如果文件是只读的,也会导致问题。添加/R
选项以允许复制只读文件。您可以在以下位置找到可用选项列表:
另一个可能的问题是无法访问基础文件夹。如果是,请尝试执行
“启动xcopy”
而不是“xcopy”
。这将打开另一个具有管理员权限的命令窗口。我收到此错误,因为运行TFS生成服务的用户帐户没有写入目标文件夹的权限<代码>右键单击文件夹-->属性-->安全性由于文件在另一个实例中打开,因此出现此错误
当我关闭文件并再次重新构建解决方案时,它被成功复制。我也遇到了同样的问题。
VS中的一个简单的“清理解决方案”清除了错误,但它是一个临时解决方案。如果后期生成事件包含用于将生成输出复制到某个目录的copy/xcopy命令(这通常是最常见的后期生成操作)如果源目标或目标目标的完整目录路径包含包含空格的文件夹名称,则可能会出现此问题。请删除目录名的空格,然后重试。我遇到了相同的错误,但这不是因为文件已锁定,而是因为文件丢失 VS试图复制一个不存在的文件的原因是由于生成后事件命令 在我澄清之后,问题解决了 更新: 正如@rhughes评论的那样: 真正的问题是如何让命令在这里工作,而不是 移除它 他是绝对正确的
正如许多网站所提到的,这有多种原因。对我来说,这是由于源和目标的长度(路径长度)。我在命令提示符下尝试了xcopy,但无法键入完整的源代码和路径(在某些字符之后,它不允许您键入)。然后,我缩短了路径长度,并能够运行。
希望这有帮助。这种情况可能发生在多种情况下:
我发现将文件的Copy To Output Directory参数设置为Copy似乎总能解决锁定问题。虽然现在我有两份文件,需要删除一份 我也有同样的问题。然而,对我来说什么都不管用。我通过添加
exit 0
我的代码。问题是,当我复制文件时,有时找不到最后一个文件,bat返回一个非零值
希望这对别人有帮助 如果您运行的是Windows 7以后的版本,您可以尝试使用新的“robocopy”命令:
robocopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)"
有关robocopy的更多信息可以找到。我也遇到了这个问题。请在错误窗口中仔细检查结果 在我的例子中,一个拖尾
\
正在使xcopy崩溃(因为我使用的是$(TargetDir)
)。在我的例子中,$(SolutionDir)…\bin
。如果您正在使用任何其他输出,则需要对此进行调整
另外请注意,如果编译后错误消失,则启动xcopy
不会修复它。它可能刚刚被命令行抑制,并且没有实际复制任何文件
顺便说一句,您可以在命令shell中手动执行xcopy命令。在那里执行它们时,您将获得更多详细信息,为您指明正确的方向。在管理员模式下运行VS,它应该可以正常工作。在构建完成后使用XCOPY时,我遇到了同样的问题。在我的例子中,问题的发生是因为只读权限
(robocopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)") ^& IF %ERRORLEVEL% LEQ 4 exit /B 0
msbuild foo.sln /p:PostBuildEvent=
msbuild -m:1
msbuild -maxcpucount:1
msbuild