Msbuild Teamcity延迟复制工件

Msbuild Teamcity延迟复制工件,msbuild,teamcity,Msbuild,Teamcity,我正在运行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:\BuildAg

我正在运行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>

$([System.DateTime]::Now.ToString('yyyyMMdd'))
有没有人遇到过这个问题,或者应该怎么解决


编辑:奇怪的是,当我在签出文件夹的根目录中创建zip文件时,一切都正常工作,但当我将其创建到调试文件夹时,就会出现此错误。

TeamCity仅在所有构建步骤完成时(即MSBuild脚本完成时)才会发布工件

要在构建期间发布构件,您需要在构件准备就绪时从构建脚本生成特殊服务消息:


如果不使用服务消息,则应检查锁定文件的进程。也许您在同一台计算机上有两个代理同时运行构建并相互干扰?

我最终做的不是将创建的.zip文件放入调试文件夹,而是放入项目根文件夹。这样就创建了zip文件,Teamcity可以将其用作工件。

没有第二个代理正在运行,请参阅原始帖子中的编辑。