只有在由TeamCity构建时才会出现神秘失败的沙堡

时间:2012-01-02 17:35:47

标签: msbuild teamcity sandcastle shfb

我有一个相当大的解决方案,其中包含两个基于Sandcastle + Sandcastle帮助文件生成器(SHFB)的文档项目。这些项目都可以从命令行(msbuild project.shfb)正确构建,也可以使用SHFB Visual Studio 2010集成的beta版本。

当我在TeamCity中运行构建时,我在文档构建中遇到了一个神秘的构建失败。 SHFB日志说明了这一点:

      [Sandcastle Help File Builder, version 1.9.3.0]
      Cached Resolve Reference  Links 2 Component.  Copyright © 2006-2011, Eric Woodruff, All Rights Reserved
      http://SHFB.CodePlex.com
  Info: CachedResolveReferenceLinksComponent: Loaded 61 cached MSDN URL entries
  Info: SaveComponent: Instantiating component.
  Info: BuildAssembler: Building topic N:MyProject
  Info: BuildAssembler: Building topic T:MyProject.ActionNotImplementedException
  Info: BuildAssembler: Building topic AllMembers.T:MyProject.ActionNotImplementedException
  Info: BuildAssembler: Building topic Methods.T:MyProject.ActionNotImplementedException
  Info: BuildAssembler: Building topic Properties.T:MyProject.ActionNotImplementedException
  Info: BuildAssembler: Building topic Overload:MyProject.ActionNotImplementedException.#ctor
  Info: BuildAssembler: Building topic M:MyProject.ActionNotImplementedException.#ctor
  Info: BuildAssembler: Building topic M:MyProject.ActionNotImplementedException.#ctor(System.String)
BUILDASSEMBLER : error : CachedCopyFromIndexComponent: An access error occured while attempting to load the file 'C:\Program Files (x86)\Sandcastle\Data\Reflection\mscorlib.xml'. The error message is: Could not find file 'C:\Program Files (x86)\Sandcastle\Data\Reflection\mscorlib.xml'. [C:\BuildAgent\work\37c2302839b8996f\Help\Output\Developer\Working\BuildReferenceTopics.proj]
    Last step completed in 00:02:31.3827
</buildStep>
<buildStep step="Failed">  

SHFB: Error BE0043: Unexpected error detected in last build step.  See output above for details.

</buildStep>
</shfbBuild>

果然,Sandcastle正在寻找的文件(mscorlib.xml)不存在。但是这个构建在TeamCity之外工作,所以我会得出结论,当TeamCity被解决时,Sandcastle只是正在寻找该文件。那么,为什么这只会导致TeamCity失败而不是msbuild中的命令行失败?我很感激任何故障排除提示,因为我没有灵感。

澄清(感谢@Sayed):TeamCity构建代理程序是我可以成功运行命令行构建的同一台计算机,因此它与上述所有内容的计算机相同。 TeamCity Server是一台不同的计算机,但它不参与构建。

1 个答案:

答案 0 :(得分:5)

我今天遇到了同样的问题,我最终设法解决了这个问题:你只需要删除%USERPROFILE%\AppData\Local\EWSoftware\Sandcastle Help File Builder\Cache文件夹中的缓存文件。

(注意:由于您的问题与TeamCity有关,因此可能是文件位于TeamCity数据文件夹中)

在我的情况下,我认为这是因为缓存文件是使用旧版本的SHFB生成的,并且与新版本不兼容。