【问题标题】:Mysteriously failing sandcastle build only when built by TeamCity只有当 TeamCity 建造时,才会神秘地失败沙堡建造
【发布时间】:2012-01-31 23:36:22
【问题描述】:

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

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

 [Sandcastle 帮助文件生成器,版本 1.9.3.0]
      缓存解决参考链接 2 组件。版权所有 © 2006-2011,埃里克伍德拉夫,保留所有权利
      http://SHFB.CodePlex.com
  信息:CachedResolveReferenceLinksComponent:加载了 61 个缓存的 MSDN URL 条目
  信息:SaveComponent:实例化组件。
  信息:BuildAssembler:构建主题 N:MyProject
  信息:BuildAssembler:构建主题 T:MyProject.ActionNotImplementedException
  信息:BuildAssembler:构建主题 AllMembers.T:MyProject.ActionNotImplementedException
  信息:BuildAssembler:构建主题 Methods.T:MyProject.ActionNotImplementedException
  信息:BuildAssembler:构建主题 Properties.T:MyProject.ActionNotImplementedException
  信息:BuildAssembler:构建主题重载:MyProject.ActionNotImplementedException.#ctor
  信息:BuildAssembler:构建主题 M:MyProject.ActionNotImplementedException.#ctor
  信息:BuildAssembler:构建主题 M:MyProject.ActionNotImplementedException.#ctor(System.String)
BUILDASSEMBLER:错误:CachedCopyFromIndexComponent:尝试加载文件“C:\Program Files (x86)\Sandcastle\Data\Reflection\mscorlib.xml”时发生访问错误。错误消息是:找不到文件“C:\Program Files (x86)\Sandcastle\Data\Reflection\mscorlib.xml”。 [C:\BuildAgent\work\37c2302839b8996f\Help\Output\Developer\Working\BuildReferenceTopics.proj]
    最后一步在 00:02:31.3827 完成



SHFB:错误 BE0043:在最后一个构建步骤中检测到意外错误。有关详细信息,请参阅上面的输出。

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

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

【问题讨论】:

  • “但构建工作在 TeamCity 之外,所以我认为 Sandcastle 仅在涉及 TeamCity 时才寻找该文件。”你的意思是说它可以在 Team City 使用的同一台机器上运行?
  • @Sayed - 是的,对不起,我应该提到这一点。 TeamCity 构建代理是手动构建正常工作的同一台计算机。我将更新问题以反映这一点。
  • 好吧,这很有趣。当您在命令行上调用 msbuild.exe 时,您可以传递 /fl 来创建日志,您应该对照 TC 日志检查它以查看发生了什么不同。如果你不明白,你可以把日志发给我,我可以看看。只需在推特上联系我 SayedIHashimi。
  • 我在使用 SHFB 时遇到了同样的问题(涉及 mscorlib.xml 的错误完全相同)...您找到解决方案了吗?
  • 顺便说一句,如果我禁用“缓存反射索引数据”组件,它就可以工作......因为这个组件不是绝对必要的(它只是减少构建时间的优化),它是一个可以接受的解决方案,直到我找到了问题的原因。

标签: msbuild teamcity sandcastle shfb


【解决方案1】:

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

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

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

【讨论】:

  • 嗯,我的 TeamCity 构建代理作为 LocalSystem 运行,但我在任何地方都找不到任何 EWSoftware 文件夹。我想知道 LocalSystem 用户的 AppData 文件夹在哪里?
  • @TimLong,在 Win7 上,LocalSystem 用户配置文件位于 C:\Windows\system32\config\systemprofile;在 XP 上它位于 C:\Documents and Settings\LocalService
  • 感谢托马斯的所有帮助。案件结案。
  • 我必须使用 gui 构建(重建已删除的缓存文件)并将旧的 mscorlib.xml 文件(来自以前的安装)复制到反射目录中。
  • 这是我在 CodePlex (sandcastle.codeplex.com/workitem/12067) 上登录的问题的链接。
猜你喜欢
  • 2012-10-27
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多