D3DERR_INVALIDCALL错误,TeamCity构建器

tom*_*mzx 5 c# teamcity xna

我一直在尝试使用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
Run Code Online (Sandbox Code Playgroud)

我没有任何想法导致这种情况.就像我说的,它能够正确编译.fbx模型以及我的ContentPipeline项目和我的SharedContent项目(解决方案的一部分).

我真正想要的是一些指向问题根源的指针(如果可能的话,解决问题的方法).据我了解,D3D库似乎存在问题.我还要提醒您,整个解决方案在Visual Studio 2008下编译,因此TeamCity存在一个小问题,要么我没有提供某些东西,要么实际上设置错误.

Jef*_*eff 2

几乎可以肯定,Team City 正在以非交互模式作为本地系统运行其构建过程,而不是作为实际有权访问和获取图形设备的用户。我知道我什至在尝试通过远程桌面界面批量处理纹理时都遇到了问题,因为 DirectX 无法获取图形设备。

解决方案可能是看看 Team City 是否为您提供了请求其构建器作为登录用户运行的能力,而不是作为本地系统或作为服务运行,尽管我不能告诉您这在 Team City 中实际上是可能的。