我有一个相当大的解决方案,其中包含两个基于 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 完成 </buildStep> <buildStep step="失败"> SHFB:错误 BE0043:在最后一个构建步骤中检测到意外错误。有关详细信息,请参阅上面的输出。 </buildStep> </shfbBuild>
果然,Sandcastle 正在寻找的文件(mscorlib.xml)不存在。但是构建工作在 TeamCity 之外,所以我会得出结论,Sandcastle 仅在涉及 TeamCity 时才寻找该文件。那么,为什么这只会导致 TeamCity 失败,而不是 msbuild 中的命令行失败?我很感激任何故障排除提示,因为我没有灵感了。
澄清(感谢@Sayed):TeamCity 构建代理是我可以成功运行命令行构建的同一台计算机,因此它是上述所有内容的同一台计算机。TeamCity Server 是另一台计算机,但不参与构建。