2012-01-09 52 views
1

我運行MSBuild腳本來編譯我的項目,並在TeamCity的常規設置中設置工件路徑。我的MSBuild腳本首先生成並創建一個zip文件。我想的是zip文件添加爲神器,但是當我在TeamCity的運行構建我得到這個錯誤:團隊延遲複製文物

[17:44:56]: [CreateNightlyZip] Zip 
[17:44:56]: [Zip] C:\BuildAgent\Build\Build.proj(55, 5): The process cannot access the file 'C:\BuildAgent\work\c13cf8f192b25cd1\bin\Debug\20120109_Foo.PE.zip' because it is being used by another process. 

所以lookes喜歡的TeamCity試圖搶zip文件右其創建時,然後我的MSBuild腳本無法將文件放入其中。

這裏是的MSBuild目標:

<Target Name="CreateNightlyZip"> 
    <PropertyGroup> 
     <StringDate>$([System.DateTime]::Now.ToString('yyyyMMdd'))</StringDate> 
    </PropertyGroup> 
    <ItemGroup> 
     <DebugApplicationFiles Include="$(DebugPath)\**\*.*" Exclude="$(DebugPath)\*vshost.exe*" /> 
    </ItemGroup> 
    <MakeDir Directories="$(NightlyBuildPath)"/> 
    <Zip Files="@(DebugApplicationFiles)" 
     WorkingDirectory="$(DebugPath)" 
     ZipFileName="$(NightlyBuildPath)\$(StringDate)_$(NightlyZipName).zip" 
     ZipLevel="9" /> 
    </Target> 

有任何allso有這個問題,或者什麼應該對此有所解決方案?

編輯:奇怪的是,當我在結帳文件夾的根目錄下創建zip文件然後一切正常,但是當我將它創建到調試文件夾時,我得到這個錯誤。

回答

1

我最終做的不是將創建的.zip文件放入調試文件夾,而是放到項目根文件夾中。這樣做可以創建zip文件,並且Teamcity可以將其用作工件。

2

只有在所有構建步驟完成後(即MSBuild腳本完成時),TeamCity纔會發佈構件。 http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-PublishingArtifactswhiletheBuildisStillinProgress

如果你不使用的服務信息,您應檢查哪些進程鎖定文件:

你需要從構建腳本產生特殊的服務信息時,文物是準備在生成過程中公佈的文物。也許你在同一臺機器上有兩個代理同時運行構建並相互干擾?

+0

沒有第二個代理正在運行,請在原始帖子中查看編輯。 – hs2d 2012-01-10 08:43:29