Msbuild 只有在TeamCity建造时,沙堡才能神秘失败

Msbuild 只有在TeamCity建造时,沙堡才能神秘失败,msbuild,teamcity,sandcastle,shfb,Msbuild,Teamcity,Sandcastle,Shfb,我有一个相当大的解决方案,它包含两个基于Sandcastle+Sandcastle帮助文件生成器(SHFB)的文档项目。这些项目都是从命令行(msbuild project.shfb)正确生成的,并且使用shfb Visual Studio 2010集成的测试版 但是,当我在TeamCity中运行构建时,我在文档构建中遇到了一个神秘的构建失败。SHFB日志显示: [Sandcastle Help File Builder, version 1.9.3.0] Cached Resolv

我有一个相当大的解决方案,它包含两个基于Sandcastle+Sandcastle帮助文件生成器(SHFB)的文档项目。这些项目都是从命令行(
msbuild project.shfb
)正确生成的,并且使用shfb Visual Studio 2010集成的测试版

但是,当我在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帮助文件生成器,版本1.9.3.0] 缓存解析引用链接2组件。版权所有©2006-2011,Eric Woodruff,保留所有权利 http://SHFB.CodePlex.com 信息:CachedResolveReferenceLink组件:加载了61个缓存的MSDN URL条目 信息:SaveComponent:正在实例化组件。 信息:BuildAssembler:构建主题N:MyProject 信息:BuildAssembler:构建主题T:MyProject.ActionNotImplementedException 信息:BuildAssembler:构建主题AllMembers.T:MyProject.ActionNotImplementedException 信息:BuildAssembler:构建主题方法。T:MyProject.ActionNotImplementedException 信息:BuildAssembler:生成主题属性。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之外进行,所以我认为Sandcastle只是在TeamCity启动时才查找该文件。那么,为什么这只会在TeamCity中导致失败,而不是从msbuild中的命令行导致失败呢?我很感激任何故障排除提示,因为我灵感不足


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

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

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


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

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

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


在我的例子中,我认为这是因为缓存文件是使用较旧版本的SHFB生成的,与新版本不兼容。

“但构建工作在TeamCity之外,因此我认为Sandcastle仅在TeamCity启动时才查找该文件。”“你的意思是说它在城市队使用的同一台机器上工作?@Sayed-是的,很抱歉我应该提到这一点。TeamCity构建代理是手动构建正常工作的同一台计算机。我将更新问题以反映这一点。好的,这很有趣。在命令行上调用msbuild.exe时,可以传递/fl来创建日志,您应该对照TC日志检查该日志,以查看发生了什么不同。如果你不明白,你可以把日志寄给我,我可以看看。只是在twitter上ping我SayedIHashimi。我在使用SHFB时遇到了同样的问题(与涉及mscorlib.xml的错误完全相同)。。。你找到解决方案了吗?顺便说一句,如果我禁用“缓存反射索引数据”组件,它会工作。。。由于该组件不是严格必需的(只是为了缩短构建时间而进行的优化),因此在我找到问题的原因之前,它是一个可接受的解决方案。“但构建工作在TeamCity之外,因此我认为Sandcastle仅在TeamCity参与时才查找该文件。”“你的意思是说它在城市队使用的同一台机器上工作?@Sayed-是的,很抱歉我应该提到这一点。TeamCity构建代理是手动构建正常工作的同一台计算机。我将更新问题以反映这一点。好的,这很有趣。在命令行上调用msbuild.exe时,可以传递/fl来创建日志,您应该对照TC日志检查该日志,以查看发生了什么不同。如果你不明白,你可以把日志寄给我,我可以看看。只是在twitter上ping我SayedIHashimi。我在使用SHFB时遇到了同样的问题(与涉及mscorlib.xml的错误完全相同)。。。你找到解决方案了吗?顺便说一句,如果我禁用“缓存反射索引数据”组件,它会工作。。。由于该组件不是严格必需的(只是为了减少构建时间而进行的优化),因此在我找到问题的原因之前,它是一个可接受的解决方案。嗯,我的TeamCity构建代理以LocalSystem运行,但我在任何地方都找不到任何EWSoftware文件夹。我想知道LocalSystem用户的AppData文件夹在哪里?@TimLong,在Win7上,LocalSystem用户配置文件位于
C:\Windows\system32\config\systemprofile
;在XP上它是