Question

Pourquoi est-System.Version dans .NET défini comme major.minor.build.revision? Presque tout le monde (y compris moi) semble convenir que la révision appartient à la troisième place, et « construire » ou tout ce que vous voulez l'appeler appartient dernier.

Est-ce que Microsoft utilise même les chiffres de cette façon hasardeuse, par exemple 3.5.3858.2, ou sont eux-mêmes les noms juste en arrière? Par exemple, si vous deviez écrire votre propre classe Version avec l'ordre major.minor.build.revision, serait-il bon d'échanger les deux derniers composants lors de la conversion à un System.Version, ou avez-vous l'ignorer et juste faire semblant les noms sont en arrière?

Était-ce utile?

La solution

Je pense que la confusion vient ce que la plupart considèrent comme un « révision » et ce Microsoft fait :

  • Construire: Une différence dans le nombre de construction représente une recompilation de la même source. Ce serait le cas en raison du processeur, la plate-forme, ou des changements compilateur.

  • Révision: assemblées avec le même nom, majeur, et les numéros de version mineure mais différentes révisions sont destinées à être complètement interchangeables. Ce serait approprié de fixer un trou de sécurité dans un ensemble publié précédemment.

L'angle de correctif de sécurité, probablement beaucoup plus commun pour eux, semble être une raison décente de l'avoir en dernier lieu, que le changement « plus petit ».

Autres conseils

Je me rends compte que je suis venue à la fête un peu en retard, mais je voulais partager mon twopence pourquoi l'ordre de construction et de révision sont « faux ». Ce n'est pas tellement qu'ils sont dans le mauvais l'ordre, mais ils ne sont pas dans any pour.

La version d'un ensemble, quand il descend à lui, est Major.Minor. De ce qui précède , Microsoft dit: « Les versions ultérieures d'un ensemble qui ne diffèrent que par numéros de construction ou de révision sont considérés comme des mises à jour de correctifs de l'avant Version « . [Je souligne]

Construire représente une recompilation de la même source. Révision représente un changement de code, mais qui est entièrement interchangable avec d'autres révisions de la même version [Major.Minor]. Mais ne l'emporte sur l'autre.

Donc, en résumé, ne pense pas comme:

+ Major
|
+-+ Minor
  |
  +-+ Build
    |
    +-+ Revision

Mais au lieu:

+ Major
|
+-+ Minor
  |
  +-+ Build
  |
  +-+ Revision
  

Est-ce que Microsoft utilise même les chiffres de cette façon hasardeuse, par exemple 3.5.3858.2

Si vous le laissez par défaut, par exemple en spécifiant [assembly: AssemblyVersion("1.1.*")], puis le troisième incréments nombre chaque jour, et le quatrième numéro est le nombre de secondes écoulées depuis minuit, divisé par deux (pour désambiguïser s'il y a plus d'un construit en une seule journée).

  

Presque tout le monde (y compris moi) semble convenir que la révision appartient à la troisième place, et « construire » ou tout ce que vous voulez l'appeler appartient dernier.

Microsoft semble être en utilisant « construire » comme synonyme de « jour »: peut-être qui est lié à l'idée de « construit tous les jours »; et une « révision » est donc alors une autre version de la construction (par jour).

réponse tardive, mais je sens les autres réponses pourraient être étendues sur un peu.

Les termes « construction » et « révision » est tout simplement la terminologie Microsoft. La classe System.Version ne se soucie pas de quelque façon que vous les assigner.

En ce qui concerne l'ordre de commutation de pièces pour correspondre à votre propre terminologie, je dirais que vous devriez essentiellement ignorer les mots tout à fait et plutôt considérer ce que le System.Version vraiment définit:

  • Un format de chaîne qu'il peut analyser et générer:

    major.minor[.build[.revision]]
    

    Cela signifie que si vous êtes habitué à vous avoir propre version formatée comme x.y.z.w, alors vous devriez instancier la classe version de cette façon:

    new Version(x, y, z, w)
    

    Toute autre ordre de paramètre ne correspondra pas à ce que Parse () et ToString () ferait. Si vous passez z et w, puis ToString () serait x.y.w.z de sortie qui serait source de confusion pour tout le monde si vous vous attendez x.y.z.w.

  • comparaison de version et trier commande , de sorte que les versions sont triées d'abord par majeur, puis par mineur, puis construire, puis la révision, comme la plupart d'entre nous attendre. Autrement dit, 1.2.5 est postérieure à 1.2.3.7.

    Donc, si vous le style de votre chaîne de version 1.2.6.4 et que vous voulez que pour être considéré plus récent que 1.2.5.8, alors ne change pas l'ordre des pièces en le constructeur version.

En bref - alors que les mots majeurs / mineurs / construction / révision pourrait donner un indice quant à ce nombre devrait être augmenté compte tenu du montant des changements, la terminologie ont très peu d'impact sur la façon dont la classe est effectivement utilisée. Le formatage et le tri est ce qui importe.

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