Question

J'ai essayé d'utiliser TeamCity 4.5 pour automatiser les versions d'un projet XNA, mais j'ai un petit problème. Mes projets se compilent correctement sous Visual Studio 2008, mais pas lorsqu'ils sont compilés avec TeamCity en tant que générateur. Le fichier de configuration utilise le paramètre sln2008 et la compilation se passe bien pendant un moment, mais dès qu'il compile des textures .png au format .xnb, l'erreur suivante apparaît:

[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

Je n'ai aucune idée de ce qui cause cela. Comme je l'ai dit, il est capable de compiler correctement les modèles .fbx, ainsi que mon projet ContentPipeline et mon projet SharedContent (composant de la solution).

Ce que je voudrais réellement, ce sont quelques indications sur ce qui serait la source du problème (et si possible, une solution au problème). Autant que je sache, il semble y avoir un problème avec la bibliothèque D3D. Je vous rappellerai également que toute cette solution est compilée sous Visual Studio 2008, de sorte qu'il existe un petit problème avec TeamCity: je n'ai pas fourni quelque chose ou bien quelque chose est mal défini.

Était-ce utile?

La solution

Presque certainement, Team City exécute son processus de construction en tant que système local en mode non interactif et non en tant qu'utilisateur disposant réellement de l'accès et de la possibilité de saisir le périphérique graphique. Je sais que j'ai eu du mal à essayer même de traiter par lots les textures via une interface de bureau à distance, car DirectX ne parvient pas à saisir le périphérique graphique.

La solution peut être de voir si Team City vous offre la possibilité de demander à son constructeur de s'exécuter en tant qu'utilisateur connecté, pas en tant que système local, ou en tant que service, bien que je ne puisse pas vous dire que c'est même possible. dans la ville d'équipe.

Autres conseils

Je n'ai pas de solution mais j'y ai réfléchi.

L'erreur est D3DERR_INVALIDCALL, je pense donc que le périphérique n'est pas disponible à ce moment pour une raison quelconque.

1) DirectX est-il installé sur une machine / une carte graphique? Je suppose que oui, car XNA nécessite une carte avec des shaders, mais TeamCity est une distribution de build, alors peut-être qu’elle fonctionne sur une machine sans elle?

2) Peut-être que TeamCity crée trop de périphériques Direct3D sur la même machine / le même processus (devinez bien)?

Les fichiers de modèle compilant correctement utilisent-ils des textures ou s'agit-il uniquement de données géométriques? J'ai l'impression que le créateur de contenu n'a pas besoin d'accéder à DirectX pour créer des modèles, mais bien pour les données de texture. Pouvez-vous construire autre chose qui nécessite un accès Direct3D? Pouvez-vous créer un projet en utilisant TeamCity qui ne contient qu'une texture dans son dossier de contenu?

Je ne sais pas si cela fonctionnerait, mais pouvez-vous obtenir plus d'informations en exécutant DirectX en mode débogage et en regardant la sortie?

J'espère que cela vous aidera quelque peu.

XNA et DirectX 9 nécessitent un utilisateur actuellement connecté pour compiler le dossier Contenu.

La solution est simple: configurez une machine à agent de compilation (machine physique réelle) avec les pré-requis pour XNA (VS2008, XNA Game Studio 3.0, etc.) et connectez-la au démarrage, puis créez un script à exécuter. l'agent du serveur d'équipe une fois connecté (en plaçant un raccourci vers le script d'exécution de l'agent dans le dossier de démarrage du menu Démarrer).

De cette façon, l'agent s'exécutera en tant qu'utilisateur local et pourra se construire normalement.

Je l'ai fait et je peux confirmer que cela fonctionne.

Désolé de faire glisser un ancien fil de discussion mais je viens de rencontrer exactement le même problème. J'essayais de faire en sorte que TC construise mon projet XNA sur Windows Server. Je souhaitais aider les autres à résoudre le même problème.

Je viens de trouver cet article et ce blog qui semblent être une solution très prometteuse: http://forums.create.msdn.com/forums/p/86699 /532976.aspx

& amp;

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

Aaron précise que la nouvelle version bêta de Win Phone SDK 7.1 Beta 2 contient XNA Game Studio 4.0 Refresh Beta 2, qui vous permet désormais de créer du contenu via le pipeline de contenu dans les types de configuration suivants:

Si votre écran est verrouillé pendant une construction Si vous utilisez une version sur un ordinateur sans tête Si vous exécutez une génération à partir d'un compte d'utilisateur non interactif

Mais il semble que cela ne fonctionnera que sur Vista ou une version ultérieure - espérons que cela devrait également inclure les serveurs. Mise à jour: Malheureusement, il ne sera pas installé sur mon serveur Windows: (

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top