我有一个相当大的解决方案,其中包含两个基于SandcaSTLe + SandcaSTLe帮助文件生成器(SHFB)的文档项目。这些项目既可以从命令行(msbuild project.shfb
)正确构建,也可以使用beta版本的SHFB Visual Studio 2010集成来构建。
但是,当我在TeamCity中运行构建时,在文档构建中出现了神秘的构建失败。 SHFB日志中说:
[SandcaSTLe帮助文件生成器,版本1.9.3.0]
缓存的解析引用链接2组件。版权所有©2006-2011,Eric Woodruff,保留所有权利
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是另一台计算机,但是不参与构建。
最佳答案
今天,我遇到了同样的问题,我最终设法解决了这个问题:您只需要删除%USERPROFILE%\AppData\Local\EWSoftware\Sandcastle Help File Builder\Cache
文件夹中的缓存文件即可。
(注意:由于您的问题与TeamCity有关,因此文件可能位于TeamCity数据文件夹中)
就我而言,这是因为缓存文件是使用较旧版本的SHFB生成的,并且与新版本不兼容。
关于msbuild - 只有由TeamCity建立的 SandcaSTLe build 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8703642/