构build时用代码4退出命令副本 – Visual Studio重新启动解决它

每当我在这里构build我的解决scheme(其中有7个项目)时,我得到了可怕的'命令副本退出代码4'错误,在Visual Studio 2010年版。

这是因为后期制作活动无法完成。

暂时解决这个问题

  • 有时:重新启动Visual Studio,我可以构build解决scheme
  • 有时候:重新启动Visual Studio和我select的文件pipe理器(Q-Dir 4.37)都可以解决这个问题。

这是后生成事件的样子:

xcopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)" /Y 

当你得到命令副本退出代码[插入值]错误,通常是由于以下原因:

  • 读/写权限
  • 缺less文件
  • 错误的目录

但是 – 显然有时我build立解决scheme时,没有问题。

仅供参考,我在两周前卸载了ReSharper 5.1.1,从那以后Visual Studio一直给我一些错误(其中不能debugging)。 我重新安装了Visual Studio,从那以后工作得更好,但仍然遇到了这个问题。 难道这与一些ReSharper的东西在某个地方?

你有同样的问题,解决了吗? 或者你有任何可能的解决办法吗?

干杯。

我总是发现这是一个文件locking问题。 代码4是不能访问文件。 我find的一个部分解决scheme是使用xcopy的/ C选项(错误时继续)。 不是一个真正的解决scheme,但主要是它已经停止了我的构build失败。

另一个只能在32位上工作的解决scheme是使用解锁工具在复制之前释放文件上的窗口句柄。

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

虽然/C可能会忽略错误,但它可能不是真正的解决scheme,因为可能有必须复制的文件才能使构build成功。

最常见的问题是在预定义的命令标签周围缺less引号(如$TargetDir )。 当在代码或TFS中创build各种分支和path时,发生这种情况的可能性非常高。

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

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

另一个可能的问题是无法访问底层文件夹。 如果是这样,尝试执行"start xcopy"而不是"xcopy" 。 这将打开另一个命令窗口,但与pipe理priveleges。

我越过了相同的错误,但这不是由于文件被locking,而是文件丢失。

为什么VS试图复制一个不存在的文件,原因是Post-build事件命令。

我清除后,问题解决了。

更新:

正如@rhughes所评论的,“

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

“他绝对是对​​的。

在这里输入图像说明

如果后构build事件包含将构build输出复制到某个目录(通常是最常见的后构build操作)的copy / xcopy命令,则在源目标或目标目标的完整目录path包含文件夹名称空间。 删除目录名称的空间并尝试。

正如许多网站所提到的,这有很多原因。 对我来说,这是由于源和目标(path长度)的长度。 我在命令提示符下尝试了xcopy,我无法input完整的源代码和path(在某些字符不允许input的情况下)。 然后我减less了path长度,并能够运行。 希望这可以帮助。

我也遇到了这个问题。请仔细检查错误窗口中的结果。

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

另外请注意,如果编译后错误消失,则start xcopy不会修复它。 它可能刚刚被命令行压制,并没有真正的文件被复制!

你可以btw在命令行中手动执行你的xcopy命令。 在这里执行它们时,你会得到更多的细节,指向正确的方向。

我得到这个错误,因为运行TFS构build服务的用户帐户没有权限写入目标文件夹。 Right-click on the folder-->Properties-->Security

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

  1. 当完整的stringpath超过254个字符。
  2. 当要复制的文件的名称是错误的。
  3. 目标path错误时。
  4. 在复制的文件或目标文件夹上设置只读属性时。

我得到这个错误,因为在另一个实例中打开文件。

当我closures文件,并再次build立解决scheme,它被成功复制。

在pipe理员模式下运行VS,它应该工作正常。

在构build完成后,我在XCOPY的情况下面临同样的问题。 在我的情况下,问题是由于在文件夹上设置了READ-ONLY权限而发生的。

我在XCOPY之前添加了attrib -R命令,并解决了问题。

希望它可以帮助别人!

与testing引擎有关的xcopy有同样的错误。 我正在使用VisualStudio Professional 2013.默认情况下testing – >testing设置 – >保持testing执行引擎运行似乎是我的错误代码4与Xcopy的原因。 closures它解决了问题。 执行引擎似乎坚持一些.dll。

我有同样的问题。 VS中一个简单的“清洁解决scheme”清除了错误,但这只是一个临时解决scheme。

我发现将文件的“复制到输出目录”参数设置为“始终复制”似乎清除了locking问题。 虽然现在我有两个文件的副本,需要删除一个。

我有同样的问题。 然而,没有为我工作。 我通过添加解决了这个问题

 exit 0 

到我的代码。 问题是,当我正在复制文件,有时最后一个文件不能被发现,并且蝙蝠返回一个非零值。

希望这可以帮助别人!

如果您正在运行Windows 7,则可以尝试新的“robocopy”命令:

 robocopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)" 

有关robocopy的更多信息可以在这里find。

我面临同样的问题。 我删除了后生成事件,它开始工作。 有时候,当我们添加一些SQL组件时,它也可能会添加后期构build命令。

我使用/ exclude选项使用xcopy来获得类似的结果。 在我的情况下,我发现编辑后构build事件(在命令之后的东西像一个换行符一样无害)并保存项目导致错误发生。 重新保存/ exclude选项中指定的文件将使其再次运行。

当我写一个DLL库时,我使用xcopy命令来复制程序可以find并加载的库。 经过几次开闭程序,在任务pipe理器中还是有一个公开的进程,我没有认出来。

查找可以使用该文件的任何进程并closures它。

什么解决了我的问题 :挖掘到你想要的项目的具体解决scheme,即不是所有项目的整体解决scheme文件。

尝试 – 我尝试了这里提到的所有其他的东西,但无济于事。

我没有看到任何东西在这里,build议这是一个Web应用程序,但我自己经历了这个问题 – 我有两个xcopy命令后生成事件,只有其中一个失败。 有东西locking在文件上,而不是Visual Studio(因为我试图重新启动它。)

唯一可以使用我build立的DLL的其他事情是IIS。 你看,

一个简单的iisreset为我做了诡计。

我遇到过同样的问题。 这是由于有两次相同的国旗造成的,例如:

如果$(ConfigurationName)== Release(xcopy“$(TargetDir) ”“$(SolutionDir)Deployment \ $(ProjectName)\”/ e / d / i / y / e)

注意“/ e”标志出现两次。 删除重复解决了这个问题。