2010-12-13 85 views
1

Je suis novice en matière d'intégration continue et j'ai décidé d'utiliser TeamCity. Un problème que j'ai est que mon code ne compile pas en raison d'une dépendance manquante.Comment gérer les dépendances externes de rupture de construction avec un serveur d'intégration continue? (Par exemple, Crystal Reports avec TeamCity)

(8, 7): erreur CS0246: Impossible de trouver le type ou le nom namespace 'CrystalDecisions' (? Vous manque une directive à l'aide ou une référence d'assemblage)

Donc, je ne suis pas bien sûr quelle est la bonne chose à faire ici. Est-ce que j'installe le Crystal Reports redistribuable et laissez-le rester là pour toujours?

  • dois-je configurer mon build pour qu'il installe de Crystal Reports avant de compiler et désinstalle après tous les tests sont complets?
  • Une autre option I ne sait pas? L'option (1) semble être un problème car je pourrais avoir plusieurs projets nécessitant différentes versions de Crystal Reports et peut-être que je ne peux pas les avoir tous installés. L'option (2) semble être possible via la ligne de commande. Je suppose que c'est la façon normale de le faire?

    Merci

  • Répondre

    5

    Pour répondre à votre question de façon succincte, vous devez installer la version redistribuable sur chaque case qui devrait compiler le code de base, y compris les agents de construction de TeamCity, et le laisser là indéfiniment (vous devriez, à partir de ce moment-là, seulement avoir à toucher à nouveau ce paquet pour le mettre à jour à une version ultérieure comme votre application peut exiger).

    Habituellement, le serveur TeamCity (et/ou ses agents de build si vous utilisez un modèle CI distribué) doit être configuré avec un environnement de développement simpliste et/ou une installation du logiciel. Autrement dit, l'agent de construction aura besoin des mêmes ressources que l'environnement de développement pour compiler l'application, sauf pour une installation complète de l'EDI (vous utilisez probablement msbuild ou nant à la place), exactement pour les mêmes raisons que l'environnement de développement a besoin des ressources. Ces ressources comprennent, mais sans s'y limiter:

    • Le code de base lui-même; tout le code source, les fichiers de configuration et les fichiers de contenu/de ressources intégrés.
    • La version ciblée du .NET Framework, ainsi que toute autre version que vous souhaitez soutenir explicitement (comme 3,5 lorsque vous ciblez 4.0)
    • bibliothèques externes tels que les cadres ORM et IoC, NUnit, fournisseurs de données personnalisées telles que SQLite , et oui, les redistribuables tels que Crystal Reports. Cela inclut l'enregistrement du GAC si nécessaire.
    • Structure de dossiers appropriée pour les entrées, les sorties, les références d'assemblage, etc., identique à l'environnement de développement.

    La manière la plus simple de s'assurer que tout ceci est présent est de le construire dans l'architecture de votre solution si possible.

    +0

    hmmm ... ce n'était pas vraiment la réponse que j'attendais, mais c'est certainement plus simple que d'installer des choses avant la construction et la désinstallation après. Merci d'avoir répondu. – i8abug

    +0

    Bien y penser; voulez-vous installer le redistribuable sur votre boîte de dev lorsque vous vous connectez pour commencer à développer, et le désinstaller quand vous avez terminé? Sauf dans le cas très rare d'avoir besoin de tester différentes applications utilisant différentes versions de la redistribuable qui ne s'installent pas en parallèle, vous vous épargnerez un peu de mal de tête en le configurant une seule fois. – KeithS