命令“XCOPY”在使用新的构建定义进行检入时退出,错误代码为4。

4

我正在使用TFS2012。我已经创建了一个构建定义,以便在VS2012中构建每个CheckIn。在Vs2008中,为我的项目创建了一个预构建事件,使用XCOPY将一些文件从解决方案目录复制到另一个文件夹。但是,在我进行CheckIn后,构建失败并显示以下错误:

Summary
Debug | Any CPU
 1 error(s), 0 warning(s)
$/test/coding_files/cal_reg.sln - 1 error(s), 0 warning(s), View Log File
 C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets (895): The command "XCOPY "C:\Builds\1\test\New Build Definition 1\Sources\coding_files\*.*" "\\pc97\D\" /E /Y /R /K" exited with code 4.
 $/test/coding_files/cal_reg.sln compiled
 No Test Results
 No Code Coverage Results
Other Errors and Warnings
 1 error(s), 0 warning(s)
 Exception Message: MSBuild error 1 has ended this build. You can find more specific information about the cause of this error in above messages. (type BuildProcessTerminateException)
Exception Stack Trace:    at System.Activities.Statements.Throw.Execute(CodeActivityContext context)
   at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
   at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
   at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

为什么会发生这种情况?在构建之前执行复制命令应该怎么做呢?

文档中可以看到,退出代码4表示:>发生初始化错误。内存或磁盘空间不足,或者您在命令行上输入了无效的驱动器名称或无效的语法。 - ottodidakt
你解决了这个问题吗?你能把你在预构建事件中输入的确切XCOPY命令粘贴一下吗? - Arafat
5个回答

3
请注意,在xcopy命令中添加/C开关并不能解决错误。它只是表示如果xcopy在复制一个文件时遇到错误,但还有其他文件需要复制,它不会使整个复制过程失败。它只会失败无法复制的文件,并继续复制其他可以复制的文件。
在某些情况下,这可能是期望的行为,但根据您的实现方式,它也可能是危险的,因为它可能隐藏了实际的复制问题。

3

使用start xcopy /Y /R代替xcopy。这对我起了作用。


这是做什么的?它没有输出结果。 - user3505901

1
我通过另一种复制方式解决了这个问题。 用文本编辑器打开你的.csproj文件,修改文件末尾的"AfterBuild"部分。
<Target Name="AfterBuild">
    <ItemGroup>
        <MyFile Include="myfile.xml"/>
    </ItemGroup>
    <Copy SourceFiles="@(MyFile)" DestinationFolder="$(OutputPath)" />
</Target>

我从未遇到过这种复制方式的问题,而且它是跨平台的方式。

你在哪里输入这个XML? - Hauns TM

0

-1
在PowerShell中运行相同的xcopy命令时,我看到了共享冲突。将/C添加到xcopy中解决了这个问题。

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