2009-09-10 13 views
7

Je suis impatient de mettre en œuvre une construction quotidienne pour un projet à venir.Quelle est la bonne façon de gérer la version d'assemblage?

Mais avant de le faire, j'ai besoin de savoir comment effectuer une version correcte d'un assemblage.

Je les préoccupations suivantes:

  • chaque assemblée doit avoir un numéro de version indépendante ou si ils partagent tous la même version?
  • Dois-je utiliser une version * pour la construction et la révision?
  • La révision est-elle pertinente pour la construction quotidienne?

Répondre

8

Nous imprimons tous les assemblages dans nos produits avec le même numéro de version en procédant comme suit:

  • Lien toutes les assemblées à un AssemblyInfoCommon.cs contenant l'info numéro de version : voir here pour un Exemple.

  • Générer le fichier AssemblyInfoCommon.cs dans le cadre de la construction à l'aide (dans notre cas) la tâche NAnt asminfo, .NET Régulateur de vitesse et la révision SVN étiqueteuse

Dans notre cas, nous don n'utilisez pas la version *. Toutes les versions déployées sont construites sur le serveur de construction. Nous ne nous inquiétons pas du numéro de version sur nos ordinateurs de bureau.

+0

+1 pour les numéros de build du serveur de génération. Les builds devraient être répétables, ce qui signifie qu'ils devraient être scriptés, et les faire sur votre bureau, il est trop facile d'être paresseux et "juste savoir" comment le faire plutôt que de passer par la peine de créer un script de construction. – gregmac

0

Alors Chaque ensemble devrait avoir la même version qui est généralement une combinaison de la version à savoir 3.4 + le numéro de build qui est une séquence qui représente le nombre de fois que la libération a été compilé sur le serveur de build. La révision est pertinente car elle indique le nombre de générations que vous avez créées pour cette version. Vous pouvez vraiment le faire de deux façons. La première serait que si vous avez planifié une version 3.4, alors quand vous commencez à travailler sur cette version, alors c'est votre numéro de version majeur et votre numéro de version mineur s'incrémente avec la version. Une autre façon de faire est de contrôler étroitement les versions de construction en ce que lorsque vous êtes prêt à effectuer votre version de QA/Régression, vous réglez votre version majeure sur 3.4 et vous laissez votre numéro de version mineur à 0. Vous gardez les choses comme ça jusqu'à ce que vous libérez. De cette façon, vous pouvez contrôler la numérotation de votre service pack via le numéro de version mineur. J'espère que cela t'aides.

2

La réponse dépend vraiment de ce que vous essayez d'accomplir avec les numéros de version d'assemblage. Si vous effectuez un déploiement ClickOnce et que vous souhaitez effectuer des téléchargements indépendants des assemblages mis à jour, vous devez avoir chaque version en version indépendante. Sinon, je pense qu'il est souvent intéressant de faire correspondre les versions d'assemblage au numéro de version du logiciel. Dans des scénarios plus complexes, vous pourriez avoir besoin d'une autre stratégie. Un schéma que j'ai utilisé dans une entreprise précédente était major.minor.revision.build - donc dans la version 1.0 du produit, la version de l'assemblage et la version du fichier d'assemblage sur chaque assembly étaient 1.0.0.1129 (par exemple). Cela rendait facile de faire correspondre les assemblages qui faisaient partie de la version du logiciel, jusqu'au numéro de build. Nous avons accompli cela en utilisant une recherche de pré-compilation et le remplaçons dans chaque fichier AssemblyInfo.cs pour remplacer un jeton par les numéros de version fournis par notre processus de construction automatisé.

0

Je suis normalement d'accord que tous les assemblages doivent avoir le même numéro de version; cependant, je voudrais faire une mise en garde à cela. Si l'un des assemblages est utilisé ailleurs que dans ce projet ou s'il est considéré comme son propre projet, il doit avoir son propre numéro de version. Il devrait également probablement être retiré de cette solution et dans son propre. La seule raison pour laquelle je mentionne cela est que j'ai vu de nombreuses occasions où les gens ont une assemblée qui est utilisée dans quelques autres endroits, mais principalement dans un endroit et ils essayent de garder la version droite. C'est une mauvaise idée de le faire. Je pense que le principe de la responsabilité unique s'applique également au niveau de la solution/du projet.

En ce qui concerne la numérotation, je suis d'accord avec Guy Starbuck (major.minor.revision.build). C'est comme ça que je l'ai toujours fait et ça a toujours bien fonctionné.

0

Nous avons une grande application (des centaines d'assemblages) avec des versions fréquentes (environ 1 par mois). Nous sommes allés pour le "donner à chaque assemblage la même version" mais c'est une source constante de frustration que les assemblages pour une version soient complètement incompatibles avec ceux d'un autre, malgré le fait que les interfaces de ces assmblies changent rarement. Si cela vous convient, vous pouvez bénéficier d'assemblages de gestion des versions séparément - chaque fois que vous mettez à jour votre assemblage, vous ne faites qu'incorporer le numéro de version si vous voulez réellement rompre la liaison d'assemblage (par exemple, si l'interface change, ou les changements sont significatifs par ailleurs que vous voulez empêcher quelqu'un d'utiliser de façon accidentielle la version précédente).

Questions connexes