Pergunta

Eu tenho tentado usar TeamCity 4.5 para automatizar constrói de um projeto de XNA, mas eu tenho um pequeno problema. Meus projetos compilar corretamente em Visual Studio 2008, mas não quando compilado com TeamCity como o construtor. O arquivo de configuração utiliza a definição sln2008, e compilação vai bem por um tempo, mas assim que ele vai compilar .png texturas para .xnb, eu recebo o seguinte erro:

[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

Eu não tenho nenhuma idéia o que está causando isso. Como eu disse, é capaz de compilar .fbx modelos corretamente, bem como o meu projeto ContentPipeline e meu projeto SharedContent (parte da solução).

O que eu realmente gostaria é alguns ponteiros para o que seria a origem do problema (e, se possível, uma solução para o problema). Tanto quanto eu entendo, parece haver um problema com a biblioteca D3D. Eu também irá lembrá-lo que todo este compila solução sob Visual Studio 2008, portanto, há um pequeno problema com TeamCity, ou eu não forneceram alguma coisa, ou algo está realmente configurado incorretamente.

Foi útil?

Solução

Quase certamente, Equipe City está executando-o do processo de construção como sistema local em um modo não-interativo, e não como um usuário que realmente tem o acesso e capacidade de agarrar o dispositivo de gráficos. Eu sei que eu tive problemas, mesmo tentando texturas processo batch através de uma interface Remote Desktop porque DirectX não pode agarrar o dispositivo gráfico.

A solução pode ser para ver se Equipe Cidade oferece-lhe a possibilidade de solicitar que construtor de execução como um usuário conectado, e não como Sistema Local, ou como um serviço, embora eu não posso dizer que isso é verdade mesmo possível no Team City.

Outras dicas

Eu não tenho uma solução, mas eu estive pensando sobre isso.

O erro é D3DERR_INVALIDCALL então eu estou pensando o dispositivo não está disponível naquele momento, por alguma razão.

1) As máquinas que executam a construção ter o DirectX instalado / a placa gráfica? Estou assumindo que sim desde XNA requer um cartão com shaders mas TeamCity é uma distribuição de construção talvez por isso ele está sendo executado em uma máquina sem ele?

2) Talvez TeamCity está causando também muitos dispositivos Direct3D a ser criado na mesma máquina / processo (palpite completa)?

Será que os arquivos de modelo que compilam corretamente usar texturas ou são dados apenas de geometria? Tenho a sensação do construtor de conteúdo não precisa de acesso a DirectX para modelos construir, mas não para dados de textura. você pode construir qualquer outra coisa que requer acesso Direct3D? você pode construir um projeto usando TeamCity que só tem uma textura em sua pasta de conteúdo?

Eu não tenho certeza se isso iria funcionar, mas você pode obter mais informações através da execução DirectX no modo de depuração e olhando para a saída?

Espero que isso ajude um pouco.

XNA e DirectX 9 requerem uma corrente registrado no usuário, a fim de compilar a pasta de conteúdo.

A solução é simples, configurar uma máquina agente de compilação (máquina física real) com o pré-reqs para XNA (VS2008, XNA Game Studio 3.0, etc) e torná-lo faça o login na inicialização, em seguida, criar um script para executar o agente servidor equipe quando logado (colocando um atalho para o script agente de execução na pasta de arranque no menu iniciar).

Desta forma, o agente será executado como o usuário local e pode construir como normal.

Eu tenho feito isso e pode confirmar que ele funciona.

Desculpe a arrastar-se uma discussão antiga, mas eu só correr para o mesmo problema exato tentando obter TC para construir meu projeto XNA no Windows Server e queria ajudar os outros que vêm através do mesmo problema.

Acabei de encontrar este artigo e blog que parece uma solução muito promissora: http://forums.create.msdn.com/forums/p/86699 /532976.aspx

&

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

Aaron basicamente afirma que o novo beta do Win Telefone SDK 7.1 Beta 2 contém XNA Game Studio 4.0 Atualizar Beta 2, que agora permite que você para o conteúdo de construção através do oleoduto de conteúdo nos seguintes tipos de configurações:

Se a tela está bloqueada durante uma compilação Se você estiver executando uma compilação em um computador sem cabeça Se você estiver executando uma compilação de uma conta de usuário não-interativo

Mas parece que isso só vai funcionar no Vista ou acima - espero que deve incluir servidores também. Atualização: Não, infelizmente, ele não vai instalar no meu Windows Server: (

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top