2010-07-21 3 views
0

Je configure TeamCity pour créer des solutions dont les projets ont une directive OutputPath qui redirige la construction vers ../../bin/Release ou ../../bin /Déboguer. Les solutions sont bien construites dans Visual Studio 2008 mais lorsque TeamCity crée les solutions, les assemblages de projets référencés échouent et nous obtenons des erreurs d'espace de noms (Le type ou le nom d'espace de nommage 'SomeReferencedAssembly' n'existe pas dans l'espace de nommage 'AssemblyBeingBuilt').Configurer TeamCity pour suivre les directives OutputPath dans les fichiers csproj

Existe-t-il un moyen de dire à TeamCity où chercher les projets référencés dont les assemblages ne sont pas dans l'emplacement par défaut? Il comprend la directive parce que quand il construit le projet référencé, la sortie est dirigée correctement. C'est juste que les autres projets qu'il construit après ne trouvent pas les assemblages dont ils dépendent.

Répondre

1

Les références non vérifiées sont-elles des tierces parties (code que vous ne compilez pas) ou votre code?

Si vous êtes une tierce partie, vous devez vous assurer que la racine du référentiel de contrôle source vers laquelle vous pointez et les résultats des dépendances sont également extraits. (ou pire, les mettre dans GAC ou les installer sur chaque serveur de construction, ce n'est pas une bonne idée sauf si vous devez)

Si votre code, sont-ils construits par un projet dans la même solution ou un autre?

Dans la mesure où vous pouvez faire dépendre un projet d'un autre et pointer la construction sur une solution, c'est une bonne chose.

Si vous utilisez 2 solutions différentes, vous devez utiliser les dépendances (section 5) pour configurer les dépendances d'artefact.

+0

Tout est une solution et il n'y a pas de solution tierce. Le problème est que tous les projets de la solution ont leur directive OutputPath (pour toutes les configurations de construction) définie sur "../../bin/$(Configuration)" au lieu de la valeur par défaut "bin/$ (Configuration)". Cela signifie que la sortie de génération est supprimée dans un répertoire en dehors de la structure de la solution. VS se débrouille bien avec ceci et TC construit à droite OutputPath, mais tombe quand un autre projet dépend de celui qui vient d'être construit et déposé sur le OutputPath. – grenade

+0

Les projets dépendants ne peuvent pas trouver les assemblages des projets dont ils dépendent. Je pense que le problème est que TC n'est pas conçu pour suivre la directive OutputPath lors de la résolution des références d'assembly. J'ai soulevé un bug avec TC et en attendant je vais essayer votre idée de dépendances d'artefacts. – grenade

1

Utilisez-vous le coureur de solution dans teamcity? Si c'est le cas, l'emplacement des références est spécifié dans chaque csproj. Vous ne devriez pas avoir besoin de faire de configuration supplémentaire.

Vérifiez que les références sont des références de projet plutôt que des références d'assemblage. Une référence d'assembly peut pointer vers ../../bin/debug/assembly.dll qui ne serait pas résolu lors de la compilation en version.

Vous pouvez vérifier dans le csproj que Visual Studio n'affiche que la liste déroulante 'Version spécifique' dans Propriétés pour les références d'assemblage.

Questions connexes