2013-05-08 47 views
4

我正在使用TFS2012.I已創建構建定義以構建每個checkIn uding VS2012。在VS2008的項目中,我創建了一個XCOPY預生成事件,從解決方案目錄中的一些文件複製到另一個folder.But後,我做的CheckIn構建與以下錯誤命令「XCOPY」在編譯時使用新的版本定義退出時出現代碼4錯誤

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

有你找到了解決這個問題的辦法?您可以粘貼您在預生成事件中輸入的確切XCOPY命令。 – Arafat 2014-03-31 16:55:28

回答

0

docs,退出代碼4種手段:發生

初始化錯誤。沒有足夠的內存或磁盤空間,或者在 命令行中輸入了無效的驅動器名稱或無效的語法。

0

在powershell中運行相同的xcopy命令我看到共享Vilation。將/ C添加到xcopy修復了這個問題。

3

請注意,將/ C開關添加到xcopy不會修復錯誤。它只是意味着如果xcopy遇到一個文件錯誤並且有其他文件需要複製,它不會使整個複製過程失敗。它只會失敗,無法複製,並繼續與其他可複製的文件。

在某些情況下,這可能是理想的行爲,但它也可能是危險的,根據實施方式隱藏實際的複製問題。

1

而不是xcopy,使用start xcopy /Y /R。這對我有效。

0

澄清:在與xcopy PostBuildEvents許多項目的解決方案。他們很少失敗。

  • 使用海拔啓動Studio並沒有幫助。
  • /C只是忽略了失敗。
  • 「start xcopy ...」剛剛忽略,因爲啓動工作正常(退出0),但錯誤發生在命令shell中。
1

我通過以另一種方式進行復制來修復此問題。 在文件的結尾用文本編輯器打開你的.csproj文件,並修改「AfterBuild」部分:

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

我從未有過複製這樣的方式的問題,它是跨平臺的方式

+0

你在哪裏輸入這個XML? – 2016-04-02 04:16:18

+1

您需要使用文本編輯器 – Mari 2016-04-08 20:59:10

+0

@Mari打開您的.csproj文件,請將其編輯到答案中。 – Gusdor 2016-04-19 07:52:27