38 votes

Meilleures pratiques pour la désignation et la gestion des versions d'assemblages?

Je suis à la recherche de bonnes pratiques pour nommer les assemblages et les versions. À quelle fréquence incrémentez-vous les versions majeure ou mineure?

Dans certains cas, j'ai vu des versions passer directement de la version 1.0 à la version 3.0. Dans d'autres cas, il semble être bloqué à la version 1.0.2.xxxx.

Ce sera pour un assemblage partagé utilisé dans plusieurs projets à travers l'entreprise. Dans l'attente de bonnes contributions.

24voto

Gulzar Nazim Points 35342

Quelques bonnes infos ici:

Quand Changer le Fichier/Assemblée Versions

Tout d'abord, les versions de fichiers et de versions de montage ne doivent pas coïncider avec les uns des autres. Je recommande que les versions des fichiers, changer avec chaque version. Mais, ne pas changer l'assemblée versions avec chaque version afin que vous puissiez faire la différence entre deux versions d'un même fichier; utilisation de la version du fichier pour que. La décision de changer de versions de montage prend un peu de discussion des types de constructions à prendre en compte: d'expédition et de non-livraison.

La Non-Livraison Des Builds En général, je conseille de garder la non-livraison de l'assemblée versions de la même entre la navigation s'appuie. Cela évite fortement nommées par l'assemblée des problèmes de chargement en raison des différences de version. Certaines personnes préfèrent utiliser l'éditeur de stratégie de redirection de nouvelles versions de montage pour chaque construction. Je recommande contre que pour les non-expédition construit, cependant: il n'est pas d'éviter tous les problèmes de chargement. Par exemple, si un partenaire x-copie de votre application, ils peuvent ne pas savoir pour installer l'éditeur de la politique. Ensuite, votre application sera brisé pour eux, même si elle fonctionne bien sur votre machine.

Mais, si il y a des cas où des applications différentes sur la même machine besoin de se lier à différentes versions de votre assemblée, je recommande de donner ces versions différentes versions de montage de sorte que le plus approprié pour chaque application peut être utilisée sans avoir à utiliser LoadFrom/etc.

L'Expédition S'Appuie Quant à savoir si c'est une bonne idée de changer de version pour l'expédition de construit, il dépend de la façon dont vous voulez que les contraignant à travailler pour les utilisateurs finaux. Voulez-vous ces versions soient côte-à-côte ou sur place? Y'a beaucoup de changements entre les deux versions? Vont-ils pour casser certains clients? Ne vous vous souciez qu'il se casse (ou voulez-vous forcer les utilisateurs à utiliser vos mises à jour importantes)? Si oui, vous devriez envisager d'incrémentation de la version de l'assembly. Mais, là encore, considèrent que le fait que trop de fois pouvez jeter sur le disque dur de l'utilisateur avec des assemblages.

Lorsque Vous Changez Vos Versions De Montage Pour changer codé en dur versions de la nouvelle, je vous recommande de créer une variable à la version dans un fichier d'en-tête et le remplacement de la coder en dur dans les sources avec la variable. Ensuite, exécutez un pré-processeur lors de la construction pour mettre dans la bonne version. Je recommande de changer les versions de droit après l'expédition, pas droit devant, de sorte qu'il n'y a plus de temps pour repérer les bugs en raison de la modification.

21voto

andy Points 3302

Une façon de définir vos versions de donner sens sémantique de chaque partie:

  • Aller à partir de N. x N+1.0 lors de la compatibilité rompt avec la nouvelle relase
  • Aller à partir de N. M N. M+1 lors de l'ajout de nouvelles fonctionnalités qui ne sont pas casser la compatibilité
  • Aller à partir de N. M. X N. M. X+1 lorsque les corrections de bugs sont ajoutés

Ce qui précède est juste un exemple -- vous voulez définir les règles qui font sens pour vous. Mais elle est très agréable pour les utilisateurs de savoir rapidement si des incompatibilités sont attendus juste en regardant la version.

Oh, et n'oubliez pas de publier les règles que vous venez avec de sorte que les gens sachent à quoi s'attendre.

8voto

Bil Points 921

Le versionnage sémantique a un ensemble de directives et de règles sur la manière de l'appliquer (et quand). Très simple à suivre et ça marche.

http://semver.org/

6voto

Scott Dorman Points 25000

La première chose que je recommande est de se familiariser avec les différences entre l'Assemblée de la version et de la version du Fichier. Malheureusement, .NET a tendance à les considérer comme de la même quand il s'agit de la AssemblyInfo les fichiers qu'il ne met AssemblyVersion et permet à l'FileVersion par défaut pour la même valeur.

Depuis que vous avez dit, c'est un partage de l'assemblée, je suis en supposant que vous dire qu'il est partagé à un niveau binaire (pas y compris par le projet dans les différentes solutions). Si c'est le cas, vous voulez être très délibérer sur la modification de la version de l'Assembly que c'est ce que .NET utilise nom fort à l'assemblée (pour vous permettre de le mettre dans le GAC) et également le "nom complet de l'assemblée". Lors de l'assemblée des changements de version, il peut avoir des modifications importantes pour les applications qui l'utilisent sans ajouter de l'assemblée rediriger les entrées dans l'application.fichier de configuration.

Comme pour les nommer, je pense que ça dépend de ce que votre entreprise les règles de nommage sont (le cas échéant) et de l'usage de la bibliothèque. Par exemple, si cette bibliothèque offre "de base" (ou de niveau système) fonctionnalité qui n'est pas spécifique à un produit particulier ou d'une entreprise, vous pouvez le nommer comme:

CompanyName.Framework.Core

si elle fait partie d'une grande bibliothèque, ou tout simplement

CompanyName.Shared
CompanyName.Core
CompanyName.Framework

Aussi loin que lorsqu'pour incrémenter les numéros de version, c'est toujours subjectif et dépend de ce que vous considérez chaque partie de la construction pour les représenter. La valeur par défaut de Microsoft régime est Majeure.Mineure.Construire.Révision, mais cela ne signifie pas que vous ne pouvez pas venir avec vos propres définitions. La chose la plus importante est d'être cohérent dans votre stratégie, et assurez-vous que les définitions et les règles de sens pour l'ensemble de vos produits.

Dans presque toutes les versions de schéma que j'ai vu les deux premières parties sont Majeures.Mineure. Le numéro de version majeure habituellement s'incrémente quand il y a de grands changements et/ou modifications importantes, tandis que le numéro de version mineure généralement incréments pour indiquer que quelque chose a changé qui n'était pas d'une modification de rupture. Les deux autres numéros sont beaucoup plus subjective et peut être le "build" (ce qui est souvent une série de valeur de date ou d'une manière séquentielle mise à jour nombre qui change chaque jour) et la "révision" ou de numéro de patch. J'ai aussi vu inversé (en donnant des Grands.Mineure.La révision.Build) où la construction est un séquentiellement nombre d'incrémentation d'un système automatisé de construction.

Gardez à l'esprit que l'assemblée versions majeures et mineures sont utilisés comme la bibliothèque de type numéro de version lors de l'assemblée est exporté.

Enfin, jetez un oeil à certaines de ces ressources pour plus d'informations:

http://msdn.microsoft.com/en-us/library/51ket42z.aspx

http://msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute.aspx

http://blogs.msdn.com/suzcook/archive/2003/05/29/57148.aspx

1voto

Scott Dorman Points 25000

Vous pouvez également vouloir regarder ce fil , car il est très similaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X