2008-10-14 6 views
11

Existe-t-il un moyen de sélectionner des packages de conception sur une base de projet?Chargement de packages Delphi designtime sur une base de projet

Les paquets sont très utiles dans les grands projets pour garder le temps de construction acceptable, mais ils sont aussi un véritable pita dans ces grands projets. Quand un développeur ajoute un nouveau paquet, il casse pour construire pour tous les autres jusqu'à ce qu'ils installent le nouveau paquet sur leur machine. Et puis il y a le versionnement des paquets ...

Alors, est-ce que quelqu'un a une solution appropriée pour cela? (Cela me dérange depuis des années maintenant)

Répondre

8

Lors de mon travail précédent, j'ai écrit un petit outil pour nous aider avec les paquets de versions. Je devrais vraiment recréer cet outil dans mon temps libre et le rendre disponible. L'outil n'a pas été difficile à écrire, alors peut-être que vous pouvez implémenter quelque chose comme ça vous-même.

Fondamentalement, il a travaillé comme ceci:

  • repo Subversion avec tous les paquets dans les sous-dossiers. Chaque dossier de package dans le référentiel avait les mêmes sous-dossiers: Lib (pour DCU), Source, Aide (si nécessaire)
  • Dans le dossier racine du repo se trouve l'outil avec un fichier XML.
  • Le fichier XML spécifiait toutes les informations nécessaires pour chaque package: quel dossier contenait les DCU, quel dossier contenait la source, quelle commande devait être exécutée pour l'aide.
  • L'outil lit dans le fichier XML et affiche une liste de contrôle de tous les packages disponibles. Les paquets installés (lus dans le registre BDS) sont cochés.
  • L'utilisateur peut faire une sélection des paquets à installer/désinstaller.
  • L'outil ajoute/supprime les clés nécessaires dans le registre BDS. Il ajoute le dossier DCU/Lib dans le chemin de recherche de l'EDI, ajoute le dossier source au chemin de navigation IDE et enregistre la commande d'aide avec un expert IDE personnalisé (Cet expert fournit une extension au menu d'aide par défaut pour le lancement l'aide pour tous les paquets installés)
  • L'outil vérifie même les conflits et les dépendances entre les paquets. Par exemple, les versions 3 et 4 de Raize Components étaient disponibles et ne pouvaient pas être actives en même temps.Dépendances vérification était utile pour les composants internes qui proviennent de TurboPower AsyncPro (lot de composants internes compté sur la communication série via AsyncPro)

Une extension possible aurait été de pouvoir sauvegarder/charger la sélection de packages et stocker cette sélection avec chaque projet afin que vous puissiez avoir seulement les paquets chargés qui sont nécessaires pour un projet particulier.

J'ai implémenté tout cela lorsque l'entreprise est passée de Delphi 5/7 à Delphi 2007. Nous avons eu beaucoup de problèmes avec le versionnement des paquets auparavant et nous voulions pouvoir mettre à jour tous les différents paquets.

Cette approche offre de belles avantages:

  • Lorsque des corrections de bugs ont dû être faits ou de nouvelles versions de logiciels tiers ont été libérés, une personne a dû engager les changements à la subversion. Tous les autres devs pourraient juste faire une mise à jour de subversion et avoir la dernière version sans aucun problème.
  • Lorsque de nouveaux packages de composants devaient être ajoutés à l'environnement, une personne devait valider tous les fichiers, modifier la liste des packages XML, puis les autres développeurs pouvaient effectuer une mise à jour de subversion et lancer l'outil.
  • Tous les composants internes et personnalisés étaient maintenant versionnés facilement. En incluant les DCU (et autres binaires) dans le repo de subversion, nous nous sommes assurés que tous les développeurs utilisaient la même version compilée. Avant qu'il ne soit possible que différentes compilations aient utilisé des réglages différents, certains composants se comportaient différemment.
  • Lorsque tous les autres devs ont finalement installé Delphi 2007, leurs paquets ont été installés en moins de 10 minutes (la plupart du temps, ils ont tout téléchargé à partir du repo subversion). Avant, avec l'installation manuelle de tous les paquets pour Delphi5/7, cela pouvait prendre jusqu'à deux jours pour tout installer.

Ce ne fut pas seulement utilisé pour des seuls composants internes, la prise en pension comprenait également quelques-uns des grands paquets de composants: Composants Raize, JCL/JVCL (avec leur installateur au lieu de l'outil bien), DevExpress Quantum Grid 3 et 4, TurboPower AsyncPro

+0

Cela semble très utile! Merci de le rendre disponible. . . –

+0

Oui, j'aimerais le rendre disponible. Mais je devrai soit le recréer à partir de zéro (pas très amusant et je manquerais beaucoup de corrections de bugs de l'original) ou obtenir mon précédent employeur pour l'ouvrir. Ça vaut le coup de leur parler quand même, j'ai toujours de bons contacts là-bas. – Otherside

+0

Ceci est très proche de ce que j'ai en tête moi-même. J'espérais que quelque chose comme ça existait déjà. J'espère que vous pouvez trouver du temps pour travailler sur ce sujet, car c'est l'une des idées qui oblige les développeurs à d'autres environnements. Merci. – Glenner003

6

Ce n'est pas facile faire aussi. Vous pouvez le faire bien, avec l'utilisation d'un registre hack personnalisé et un bds spécifique raccourci par la configuration qui vous intéresse:

Pour utiliser, il suffit de créer un nouveau raccourci et modifier la ligne de commande pour passer par exemple -rMyAlternateBDSReg. Ensuite, après le lancement une fois, l'entrée reg est créé et ils peuvent configurer ce registre de remplacement tout ce qu'ils veulent, la suppression des paquets, etc, sans d'installer l'installation par défaut .

De codegear

Si vous configurez une configuration pour chaque projet, vous pouvez alors commencer le raccourci approprié pour le projet donné. Ce n'est pas automatique, mais c'est mieux que de tout avoir tout le temps.

Un bon effet secondaire est que les temps de chargement seront améliorés.

0

Nous mettons la source pour nos paquets dans le contrôle de la source avec un fichier batch qui les reconstruit. S'il y a un changement dans l'arbre pour les paquets, nous les reconstruisons. Cela ne concerne pas l'installation de nouveaux paquets, mais il y a des hits de registre qui peuvent prendre soin de cela, donc il est possible que nous puissions inclure des snippets .reg pour gérer cela.

Questions connexes