我一直在尝试使用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 存在一个小问题,要么我没有提供某些东西,要么某些设置实际上是错误的。