4

我正在使用 TFS2012。我已经创建了一个构建定义来构建每个 checkIn uding VS2012。在我的项目的 Vs2008 中,我使用 XCOPY 创建了一个预构建事件,以将解决方案目录中的一些文件复制到另一个文件夹。但是在我执行 CheckIn Build 之后,由于以下错误而失败

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

5 回答 5

3

请注意,将 /C 开关添加到 xcopy 不会修复错误。它只是意味着如果 xcopy 遇到一个文件错误并且还有其他文件要复制,它不会导致整个复制过程失败。它只会失败任何无法复制的文件,并继续处理其他可以复制的文件。

在某些情况下,这可能是可取的行为,但也可能很危险,根据您的实现方式隐藏实际的复制问题。

于 2014-10-28T17:48:46.400 回答
2

代替xcopy, 使用start xcopy /Y /R. 这对我有用。

于 2015-04-07T03:36:33.970 回答
1

我通过以另一种方式进行复制来解决此问题。使用文本编辑器打开您的 .csproj 文件并修改文件末尾的“AfterBuild”部分:

<Target Name="AfterBuild">
    <ItemGroup>
        <MyFile Include="myfile.xml"/>
    </ItemGroup>
    <Copy SourceFiles="@(MyFile)" DestinationFolder="$(OutputPath)" />
</Target>

我从来没有遇到过这种复制方式的问题,它是跨平台的方式

于 2015-12-25T12:58:28.053 回答
0

尝试重新启动您的视觉工作室。这可能是暂时的问题。以下链接将描述 构建时使用代码 4 退出命令副本的不同方式 - Visual Studio 重启解决了它

于 2015-05-13T06:58:16.640 回答
-1

在 powershell 中运行相同的 xcopy 命令,我看到了共享 Vilation。添加 /C 到 xcopy 修复了这个问题。

于 2013-10-07T16:14:16.330 回答