2009-06-21 3 views
5

TeamCity 4.5를 사용하여 XNA 프로젝트의 빌드를 자동화하려고했지만 약간의 문제가 있습니다. 내 프로젝트는 Visual Studio 2008에서 올바르게 컴파일되지만 TeamCity를 빌더로 컴파일 할 때는 컴파일되지 않습니다. 구성 파일은 sln2008 설정을 사용하고 .xnb하는 텍스처를 .png를 컴파일 간다 컴파일은 즉시 동안 잘 어울린다하지만, 나는 다음과 같은 오류 얻을 :D3DERR_INVALIDCALL 오류, TeamCity 빌더

[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에 약간의 문제가 있습니다. 뭔가를 제공하지 않았거나 실제로 잘못 설정된 것입니다.

답변

2

거의 확실하게 Team City는 그래픽 장치를 액세스하고 실제로 가져올 수있는 사용자가 아닌 비 대화식 모드에서 로컬 시스템으로 빌드 프로세스를 실행합니다. DirectX에서 그래픽 장치를 가져올 수 없기 때문에 원격 데스크톱 인터페이스를 통해 일괄 처리 프로세스를 시도하는 데 문제가 있음을 알고 있습니다.

해결 방법 Team City가 로컬 시스템이나 서비스가 아닌 로그온 한 사용자로 실행되도록 빌더에게 요청하는 기능을 제공하는지 여부를 확인할 수 있습니다. 팀 시티에서 가능합니다.

+0

@Jeff : 답장을 보내 주셔서 감사합니다. 실제로 진행했습니다. 서비스가 로그인하는 데 사용하는 사용자를 변경했습니다. 문제는 여전히 동일하지만 지금은 서비스 속성의 "하드웨어 프로필"과 관련이 있습니다. 나는 "도둑 맞지 않은 프로필"만 가지고있는 것 같습니다 (아마 그래픽 카드에 액세스 할 수 없기 때문에 말할 수 없습니다). 또한이 하드웨어 프로필은 다른 곳에서 편집 할 수있는 것처럼 보이지 않습니다. (내가 봤고 그것에 대해 불평하는 많은 사람들이 돌아 왔습니다) – tomzx

2

나는 해결책이 없지만 그것에 대해 생각 해왔다.

오류는 D3DERR_INVALIDCALL이므로 기기가 그 당시에는 어떤 이유로 사용할 수 없다고 생각합니다.

1) 빌드를 실행하는 컴퓨터에 DirectX가 설치되어 있습니까/그래픽 카드가 있습니까? 나는 XNA가 쉐이더가있는 카드를 필요로하기 때문에 예라고 추측하고 있지만 TeamCity는 배포판이므로 배포하지 않고 컴퓨터에서 실행 중일 수 있습니다.

2) 아마도 TeamCity가 너무 많은 Direct3D 장치를 동일한 컴퓨터/프로세스 (전체 추측)에서 만들 수 있습니다.

컴파일 된 모델 파일이 텍스처를 올바르게 사용합니까 아니면 형상 데이터입니까? 컨텐트 빌더가 DirectX에 모델을 빌드하는 데 액세스 할 필요가 없지만 텍스처 데이터를 처리한다는 느낌이 들었습니다. Direct3D에 액세스해야하는 다른 것을 만들 수 있습니까? TeamCity를 사용하여 콘텐츠 폴더에 텍스처가 하나있는 프로젝트를 만들 수 있습니까?

이것이 작동하는지 모르겠지만 DirectX를 디버그 모드로 실행하고 출력을보고 자세한 정보를 얻을 수 있습니까?

희망이 다소 도움이됩니다.

+0

나는 (2)에 갈 것입니다. (1)에 대한 해결책으로서 그는 DX ​​SDK를 설치할 수 있습니다. 문제가 있습니다 –

+0

@ Kath : 답장을 보내 주셔서 감사합니다. 서버와 빌드 머신이 동일하다는 것을 잊어 버렸으므로 1을 방정식에서 제거 할 수 있습니다. DirectX를 디버그 모드로 사용하면 프로세스 종료 코드가 표시됩니다. -2146233082 이미지와 기본 게임 프로젝트로 구성된 작은 프로젝트를 만들었지 만 이미지가 없으면 컴파일되지 않습니다. – tomzx

2

XNA와 DirectX 9를 사용하려면 Content 폴더를 컴파일하기 위해 현재 로그인 한 사용자가 필요합니다.

솔루션은 간단합니다. XNA (VS2008, XNA Game Studio 3.0 등)의 사전 요구 사항을 사용하여 빌드 에이전트 컴퓨터 (실제 실제 컴퓨터)를 설정하고 시작시 로그인하게 한 다음 로그인 할 때 팀 서버 에이전트를 실행하십시오 (시작 메뉴의 시작 폴더에 에이전트 실행 스크립트의 바로 가기를 놓음).

이렇게하면 에이전트가 로컬 사용자로 실행되며 정상적으로 빌드 할 수 있습니다.

나는이 작업을 수행했는지 확인할 수 있습니다.

2

오래된 스레드를 끌어 와서 미안하지만 Windows Server에서 내 XNA 프로젝트를 작성하는 데 TC와 동일한 문제가 발생하여 다른 사용자가 동일한 문제를 해결하도록 돕고 싶습니다. 난 그냥 매우 유망한 해결책처럼 보이는이 문서 및 블로그를 발견했습니다

: http://forums.create.msdn.com/forums/p/86699/532976.aspx

&

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

아론은 기본적으로 상태가 승리 전화 SDK 7.1 베타 버전의 새로운 베타 2에는 XNA Game Studio 4.0 Refresh Beta 2가 포함되어 있습니다. 이제 다음 유형의 구성에서 콘텐츠 파이프 라인을 통해 콘텐츠를 작성할 수 있습니다.

화면이 아닌 대화 형 사용자 계정

에서 빌드를 실행하는 경우 머리가없는 컴퓨터 에 빌드를 실행하는 경우 빌드 잠겨진하지만 그것은 단지 비스타에서 실행되는 것처럼 보이는 경우 또는 그 이상 - 잘하면 서버를 포함해야합니다. 업데이트 : 안타깝게도 내 Windows 서버에 설치하지 않을 게 : (

+0

CTRL-ALT-DELETE를 통해 작업 관리자를 입력하고 그렇게하는 과정에서 화면을 볼 수 없었고 건물을 만들 때이 오류가 발생했습니다. 이 정보를 나와 공유해 주셔서 감사합니다. 이것은 구체적으로 내 대답이었다! – Xonatron