我正在使用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)
为什么会这样?在构建之前如何执行复制命令?
答案 0 :(得分:3)
请注意,将/ C开关添加到xcopy不会修复错误。它只是意味着如果xcopy遇到一个文件的错误并且还有其他文件要复制,那么整个复制过程就不会失败。任何无法复制的东西都会失败,并继续使用其他可以复制的文件。
在某些情况下,这可能是理想的行为,但它也可能是危险的,隐藏实际的复制问题取决于您实现它的方式。
答案 1 :(得分:1)
而不是xcopy
,请使用start xcopy /Y /R
。这对我有用。
答案 2 :(得分:1)
我通过另一种方式复制来解决这个问题。 使用文本编辑器打开.csproj文件,并修改文件末尾的“AfterBuild”部分:
<Target Name="AfterBuild">
<ItemGroup>
<MyFile Include="myfile.xml"/>
</ItemGroup>
<Copy SourceFiles="@(MyFile)" DestinationFolder="$(OutputPath)" />
</Target>
我从未遇到过这种复制方式的问题,而且是跨平台的方式
答案 3 :(得分:0)
尝试重新启动Visual Studio。这可能是暂时的问题。 以下链接将描述不同的方式 Command copy exited with code 4 when building - Visual Studio restart solves it
答案 4 :(得分:-1)
在powershell中运行相同的xcopy命令我看到了“共享冲突”。添加/ C到xcopy修复了问题。