我一直在尝试使用 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 模型以及我的 ContentPipeline 项目和 SharedContent 项目(解决方案的一部分)。
我真正想要的是一些指向问题根源的指针(如果可能的话,是问题的解决方案)。据我了解,D3D 库似乎存在问题。我还要提醒您,整个解决方案是在 Visual Studio 2008 下编译的,因此 TeamCity 存在一个小问题,要么我没有提供任何东西,要么实际上设置不正确。