문제

XNA 프로젝트의 빌드를 자동화하기 위해 TeamCity 4.5를 사용하려고 노력했지만 작은 문제가 있습니다. 내 프로젝트는 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

나는 이것을 일으키는 아이디어가 없습니다. 내가 말했듯이, 내 ContentPipeline 프로젝트와 SharedContent 프로젝트 (솔루션의 일부)뿐만 아니라 .fbx 모델을 올바르게 컴파일 할 수 있습니다.

내가 실제로 좋아하는 것은 문제의 원천이 될 것 (가능하면 문제에 대한 해결책)에 대한 몇 가지 포인터입니다. 내가 이해하는 한, D3D 라이브러리에는 문제가있는 것 같습니다. 또한이 전체 솔루션이 Visual Studio 2008 하에서 컴파일된다는 것을 상기시켜 줄 것입니다. 따라서 TeamCity에는 작은 문제가 있거나 무언가를 제공하지 않았거나 실제로 잘못 설정되었습니다.

도움이 되었습니까?

해결책

거의 확실히, Team City는 비 중과 모드에서 로컬 시스템으로 빌드 프로세스를 운영하고 있으며 실제로 그래픽 장치를 잡을 수있는 액세스 및 기능이있는 사용자가 아닙니다. DirectX가 그래픽 장치를 잡을 수 없기 때문에 원격 데스크탑 인터페이스를 통해 프로세스 텍스처를 배치하려는 문제조차도 알고 있습니다.

솔루션은 Team City가 지역 시스템이 아닌 로그인 한 사용자 또는 서비스로 운영되도록 요청할 수있는 능력을 제공하는지 확인하는 것입니다. .

다른 팁

나는 해결책이 없지만 그것에 대해 생각하고 있습니다.

오류는 d3derr_invalidcall이므로 그 당시에는 장치를 사용할 수 없다고 생각합니다.

1) 빌드를 실행하는 기계에 DirectX가 설치되어 있습니까?/그래픽 카드가 있습니까? XNA가 셰이더가있는 카드가 필요하므로 TeamCity가 빌드 분포이므로 시스템이없는 기계에서 실행 중입니까?

2) 아마도 TeamCity가 동일한 기계/프로세스에서 너무 많은 Direct3D 장치를 생성 할 수 있을까요 (완전한 추측)?

텍스처를 올바르게 사용하는 모델 파일이 텍스처를 사용하거나 지오메트리 데이터입니까? 컨텐츠 빌더가 모델을 구축하기 위해 DirectX에 액세스 할 필요가 없지만 텍스처 데이터에 대한 것임을 느낍니다. Access Direct3D가 필요한 다른 것을 구축 할 수 있습니까? 콘텐츠 폴더에 단 하나의 텍스처가있는 TeamCity를 사용하여 프로젝트를 구축 할 수 있습니까?

이것이 작동하는지 확실하지 않지만 디버그 모드에서 DirectX를 실행하고 출력을 살펴보면 더 많은 정보를 얻을 수 있습니까?

이것이 다소 도움이되기를 바랍니다.

XNA 및 DirectX 9에는 컨텐츠 폴더를 컴파일하려면 현재 로그인 사용자가 필요합니다.

솔루션은 간단하고 XNA 용 프리 레크 (vs2008, XNA Game Studio 3.0 등)와 함께 빌드 에이전트 머신 (실제 물리 머신)을 설정하고 시작시 로그인 한 다음 스크립트를 작성하여 팀 서버를 실행하십시오. 로그인시 에이전트 (시작 메뉴의 시작 폴더에 에이전트 실행 스크립트에 바로 가기를 배치하여).

이런 식으로 에이전트는 로컬 사용자로 실행되며 정상적으로 빌드 할 수 있습니다.

나는 이것을했고 그것이 작동한다는 것을 확인할 수 있습니다.

오래된 스레드를 끌어 올려서 죄송하지만 TC가 Windows Server에서 XNA 프로젝트를 구축하려고하는 동일한 문제가 발생하여 다른 사람들이 같은 문제를 겪는 것을 돕고 싶었습니다.

방금 매우 유망한 솔루션처럼 보이는이 기사와 블로그를 찾았습니다.http://forums.create.msdn.com/forums/p/86699/532976.aspx

&

http://blogs.msdn.com/b/astebner/archive/2011/07/07/10184338.aspx

Aaron은 기본적으로 Win Phone SDK 7.1 베타 2의 새로운 베타 베타에는 XNA 게임 스튜디오 4.0 새로 고침 베타 2가 포함되어있어 다음 유형의 구성에서 컨텐츠 파이프 라인을 통해 컨텐츠를 구축 할 수 있습니다.

비 인터랙티브 사용자 계정에서 빌드를 실행중인 경우 헤드리스 컴퓨터에 빌드를 실행중인 경우 빌드 중에 화면이 잠겨있는 경우

그러나 Vista 이상에서만 실행되는 것처럼 보입니다. 서버도 포함해야합니다. 업데이트 : 아니 슬프게도 내 Windows 서버에 설치되지 않습니다 :(

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top