Quand doit-on utiliser une référence de projet opposition binaire de référence?

StackOverflow https://stackoverflow.com/questions/46584

  •  09-06-2019
  •  | 
  •  

Question

Mon entreprise a un code commun de la bibliothèque qui se compose de beaucoup de classe bibliothèque de projets à l'appui des projets de test.Chaque projet de bibliothèque de classe émet un seul binaire, par exempleCompany.Common.Serialization.dll.Depuis que nous avons propre compilé, testé binaires ainsi que le code source, il y a débat quant à savoir si nos consommer les applications doivent utiliser des binaires ou des références de projet.

Certains arguments en faveur de références du projet:

  • Les références de projet permettrait aux utilisateurs de débogage et d'afficher toutes les solution de code sans les frais de chargement supplémentaire projets/solutions.
  • Les références de projet contribueraient à maintenir en place avec les communes composant les changements au système de contrôle de source que des changements seraient facilement identifiables sans la solution active.

Certains arguments en faveur de l'option binaire références:

  • Binaire références de simplifier les solutions et faire pour accélérer la solution des temps de chargement.
  • Binaire références permettrait aux développeurs de se concentrer sur le nouveau code plutôt que potentiellement être distrait par un code qui est déjà cuit et prouvé stable.
  • Binaire références nous obligerait à façon appropriée dogfood nos trucs que nous serions à l'aide de la bibliothèque commune, de même que celles à l'extérieur de notre organisation pourrait être tenue de le faire.
  • Depuis un binaire de référence ne peut pas être débogué (chausse), on serait forcé de se répliquer et de résolution de problèmes par l'extension de l'existant, projets de test plutôt que de tester et de fixation dans le contexte de la demande de consommation seul.
  • Binaire références veillera à ce que, parallèlement au développement sur le projet de bibliothèque de classes n'aura pas d'impact sur la demande de consommation comme une version stable de l'binaire sera référencé plutôt que d'un afflux version.Il serait la décision de la chef de projet si ou de ne pas incorporer une version plus récente du composant si nécessaire.

Quelle est votre politique/de préférence quand il s'agit de l'aide projet ou binaire références?

Était-ce utile?

La solution

Il me semble que si vous avez couvert tous les points importants.Nous avons eu une discussion similaire récemment, et nous ne sommes pas tout à fait encore décidé.

Cependant, une chose que nous avons regardé en est de référencer les fichiers binaires, de profiter de tous les avantages que vous remarque, mais avoir les binaires construit par un système de construction où le code source est dans un lieu commun, accessible à partir de tous les ordinateurs de développement (au moins si ils sont assis sur le réseau au travail), de sorte que tout le débogage peut, en fait, plongez dans la bibliothèque de code, si nécessaire.

Cependant, sur la même note, nous avons également marqué beaucoup de classes de base avec des attributs appropriés afin de rendre le débogueur de les ignorer complètement, parce que tout le débogage que vous faites dans vos propres classes (au niveau que vous êtes en développement) ne serait nettement démesuré par code à partir de la base de bibliothèques.De cette façon, lorsque vous appuyez sur la L'Étape En débogage de la touche de raccourci sur une bibliothèque de classe, vous refont surface dans le prochain morceau de code à votre niveau actuel, au lieu de devoir parcourir des tonnes de code de la bibliothèque.

En gros, j'ai vraiment de voter (dans les termes) de vos commentaires au sujet de garder prouvé code de la bibliothèque hors de la vue normale de développeur.

Aussi, si je charge la solution globale de fichier, qui contient tous les projets et, fondamentalement, tout simplement, ReSharper 4 semble avoir une sorte de maladie coronarienne problème, comme Visual Studio vient pratiquement à l'arrêt.

Autres conseils

À mon avis, le plus grand problème de l'utilisation de références de projet, c'est qu'il n'est pas de fournir aux consommateurs une base de référence commune pour leur développement.Je suis en supposant que les bibliothèques sont en train de changer.Si c'est le cas, de les construire et de s'assurer qu'ils sont versionnées vous donnera une facilement reproductible de l'environnement.

Ne pas le faire, cela signifie que votre code sera mystérieusement rompre lorsque le projet référencé changements.Mais uniquement sur certains ordinateurs.

J'ai tendance à traiter des bibliothèques comme de la 3e partie des ressources.Ceci permet à la bibliothèque de l'avoir propre processus de construction, les contrôles de qualité, etc.Lorsque l'assurance de la qualité (ou de quiconque) "bénit" une version de la bibliothèque, il est copié dans un emplacement central disponible à tous les développeurs.C'est ensuite à chaque projet afin de décider quelle est la version de la bibliothèque de consommer en copiant les fichiers binaires d'un dossier de projet et à l'aide de binaire références dans les projets.

Une chose qui est importante est de créer des symboles de débogage (pdb) des fichiers avec chaque version de la bibliothèque et de les mettre à la disposition aussi bien.L'autre option est de créer un symbole local de la stocker sur votre réseau et chaque développeur d'ajouter que le symbole de magasin pour leur VS de configuration.Ceci devrait vous permettre de déboguer le code et ont encore les avantages de usinng binaire références.

Comme pour les avantages que vous mentionnez pour les références de projet, je ne suis pas d'accord avec votre deuxième point.Pour moi, il est important de consommer des projets explicitement connaître la version de la bibliothèque commune qu'ils consomment et pour eux de prendre un volontaire pour mettre à niveau la version.C'est la meilleure façon de garantir que vous ne l'avez pas accidentellement ramasser des modifications à la bibliothèque qui n'ont pas été complété ou mis à l'essai.

lorsque vous ne voulez pas dans votre solution, ou qui ont le potentiel pour diviser votre solution, envoyer toutes les bibliothèques de sortie pour une commune, bin et référence.

J'ai fait cela dans le but de permettre aux développeurs d'ouvrir un serré solution qui n'a que le Domaine, des tests et des projets Web.Notre victoire des services, et silverlight choses, et le contrôle du web des bibliothèques sont séparés des solutions qui comprennent les projets que vous avez besoin quand vous cherchez à ceux, mais nant pouvez construire tout cela.

Je crois que votre question est en fait le cas des projets qui vont ensemble dans la même solution;la raison étant que les projets dans la même solution doit avoir des références de projet à l'autre, et des projets dans les différentes solutions doivent avoir binaire références à l'autre.

J'ai tendance à penser que les solutions doivent contenir des projets qui sont développés en étroite collaboration.Comme votre API assemblées et vos implémentations de ces Api.

La proximité est cependant relative.Un concepteur d'une application, par définition, est étroitement liée à l'application, mais vous ne souhaitez pas le concepteur et l'application au sein de la même solution (s'ils sont complexes, que c'est).Vous voudrez probablement pour développer le concepteur contre une branche du programme qui est fusionné à des intervalles plus espacés que la normale quotidienne de l'intégration.

Je pense que si le projet n'est pas une partie de la solution, vous ne devriez pas là...mais c'est juste mon avis

Je m'en sépare par le concept en bref

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