我一直在尝试使用 TeamCity 4.5 来自动构建 XNA 项目,但我遇到了一个小问题。我的项目在 Visual Studio 2008 下可以正确编译,但在使用 TeamCity 作为生成器进行编译时则无法正确编译。配置文件使用 sln2008 设置,编译一段时间进展顺利,但一旦将 .png 纹理编译为 .xnb,我就会收到以下错误:
[11:28:41]: [Project "Content.contentproj" (default targets):] Content\head.png Building content threw InvalidOperationException: D3DERR_INVALIDCALL
at Microsoft.Xna.Framework.Content.Pipeline.CommonHelperFunctions.InitD3D()
at Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.InitD3D()
at Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.Import(String filename, ContentImporterContext context)
at Microsoft.Xna.Framework.Content.Pipeline.ContentImporter`1.Microsoft.Xna.Framework.Content.Pipeline.IContentImporter.Import(String filename, ContentImporterContext context)
at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.ImportAssetDirectly(BuildItem item, String importerName)
at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.ImportAsset(BuildItem item)
at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAssetWorker(BuildItem item)
at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAsset(BuildItem item)
at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.RunTheBuild()
at Microsoft.Xna.Framework.Content.Pipeline.Tasks.BuildContent.RemoteProxy.RunTheBuild(BuildCoordinatorSettings settings, TimestampCache timestampCache, ITaskItem[] sourceAssets, String[]& outputContent, String[]& rebuiltContent, String[]& intermediates, Dictionary`2& dependencyTimestamps, KeyValuePair`2[]& warnings)
Inner exception: COMException: Exception from HRESULT: 0x8876086C
我不知道是什么原因造成的。正如我所说,它能够正确编译 .fbx 模型以及我的内容管道项目和共享内容项目(解决方案的一部分)。
我实际上想要的是一些指向问题根源的指示(如果可能的话,问题的解决方案)。据我了解,D3D库似乎有问题。我还要提醒您,整个解决方案是在 Visual Studio 2008 下编译的,因此 TeamCity 存在一个小问题,要么我没有提供某些内容,要么实际上设置不正确。
几乎可以肯定,Team City 正在以非交互模式作为本地系统运行其构建过程,而不是作为实际有权访问和获取图形设备的用户。我知道我什至在尝试通过远程桌面界面批量处理纹理时都遇到了问题,因为 DirectX 无法获取图形设备。
解决方案可能是看看 Team City 是否为您提供了请求其构建器作为登录用户运行的能力,而不是作为本地系统或作为服务运行,尽管我不能告诉您这在 Team City 中实际上是可能的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)