我正在运行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.
所以看起来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>
有没有人有这个问题或者应该解决这个问题?
编辑:奇怪的是,当我在checkout文件夹的根目录中创建zip文件时,一切正常,但是当我创建它到Debug文件夹时,我得到了这个错误。答案 0 :(得分:2)
TeamCity仅在所有构建步骤完成时,即MSBuild脚本完成时发布工件。
要在构建期间发布工件,您需要在工件准备就绪时从构建脚本生成特殊服务消息:http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-PublishingArtifactswhiletheBuildisStillinProgress
如果您不使用服务消息,则应检查哪个进程锁定了该文件。也许你在同一台机器上有两个代理同时运行构建并相互干扰?
答案 1 :(得分:1)
我最终做的不是将创建的.zip文件放入调试文件夹,而只放置到项目根文件夹。这样就创建了zip文件,Teamcity可以将其用作工件。