Domanda

Perché è System.Version in .NET definito come Major.Minor.Build.Revision? Quasi tutti (me compreso) sembra concordare sul fatto che la revisione appartiene al terzo posto, e "costruire" o qualsiasi altra cosa vuoi chiamarlo appartiene scorso.

La Microsoft anche utilizzare i numeri in questo modo casuale, per esempio 3.5.3858.2, o sono i nomi stessi solo all'indietro? Per esempio, se si dovesse scrivere la propria classe Versione con l'ordine Major.Minor.Build.Revision, sarebbe corretto per scambiare le ultime due componenti durante la conversione in uno System.Version, o si fa finta di niente e solo finta nomi sono a ritroso?

È stato utile?

Soluzione

Credo che la confusione viene ciò che più considerano una "revisione" e cosa Microsoft fa :

  • Corporatura: A differenza di numero di build rappresenta un ricompilazione della stessa fonte. Ciò potrebbe essere appropriato a causa di processore, piattaforma o modifiche compilatore.

  • Revisione: Gruppi con lo stesso nome, il numero maggiore, e la versione minore ma diverse revisioni sono destinati ad essere completamente intercambiabili. Questo sarebbe opportuno fissare un buco di sicurezza in un precedentemente rilasciato assemblaggio.

L'angolo fix di sicurezza, probabilmente molto più comune per loro sembra essere un motivo decente per averlo all'ultimo posto, come il "più-minore" il cambiamento.

Altri suggerimenti

Mi rendo conto che sto arrivando alla festa un po 'tardi, ma ho voluto condividere la mia quattro soldi sul perché l'ordine di costruzione e di revisione sono "sbagliato". Non è tanto che sono in sbagliato ordine, ma che non stanno in qualsiasi ordine.

La versione di un assieme, quando si scende ad esso, è Major.Minor. Dalla suddetta , Microsoft dice, "le versioni successive di un assembly che differiscono solo per numeri di build o di revisione sono considerati gli aggiornamenti Hotfix del versione precedente ." [Il corsivo è mio]

Crea rappresenta una ricompilazione della stessa fonte. Il di revisione rappresenta una modifica del codice, ma uno che è completamente intercambiabile con le altre revisioni della stessa versione [Major.Minor]. Ma nessuno dei due ha la precedenza sugli altri.

Così, in sintesi, non pensare ad esso come:

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

Ma invece:

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

La Microsoft anche utilizzare i numeri in questo modo casuale, per esempio 3.5.3858.2

Se si lascia che di default, per esempio specificando [assembly: AssemblyVersion("1.1.*")], poi il terzo numero di incrementi di ogni giorno, e il quarto numero è il numero di secondi dalla mezzanotte, diviso per due (per disambiguare se c'è più di un costruisce in un solo giorno).

  

Quasi tutti (me compreso) sembra concordare sul fatto che la revisione appartiene al terzo posto, e "costruire" o qualsiasi altra cosa vuoi chiamarlo appartiene scorso.

Microsoft sembra essere l'utilizzo di "costruire" come sinonimo di "giorno": forse, che è legato al concetto di "costruisce tutti i giorni"; e una "revisione" è poi così un'altra versione della build (tutti i giorni).

risposta in ritardo, ma sento le altre risposte potrebbero essere ampliati su un po '.

I termini "costruire" e "revisione" è solo la terminologia di Microsoft. La classe System.Version non si preoccupa in alcun modo come li si assegna.

Per quanto riguarda la commutazione l'ordine delle parti per abbinare il vostro propria terminologia direi che si dovrebbe sostanzialmente ignorare le parole del tutto e invece prendere in considerazione ciò che lo System.Version davvero definisce:

  • Un formato di stringa che può analizzare e generare:

    major.minor[.build[.revision]]
    

    Questo significa che se siete abituati ad avere voi propria versione formattata come x.y.z.w, allora si dovrebbe creare un'istanza della classe Versione in questo modo:

    new Version(x, y, z, w)
    

    Qualsiasi altro ordine parametro non corrisponderà quello Parse () e ToString () farebbe. Se si passa z e w, quindi ToString () sarebbe x.y.w.z uscita che sarebbe fonte di confusione per tutti se vi aspettate x.y.z.w.

  • Un confronto la versione e ordinare ordine , per cui sono ordinati versioni la prima volta da importante, poi da minorenne, quindi costruire, poi la revisione, come la maggior parte di noi aspettarsi. Cioè, 1.2.5 è successiva a quella 1.2.3.7.

    Quindi, se il tuo stile stringa di versione come 1.2.6.4 e si desidera che per essere considerato più recente rispetto a 1.2.5.8, allora non cambiare l'ordine delle parti in il costruttore versione.

In breve - mentre le parole maggiore / minore / build / revisione potrebbe dare un indizio su quale numero dovrebbe essere aumentato considerando la quantità di modifiche, la terminologia hanno ben poco effetto su come la classe viene effettivamente utilizzato. La formattazione e l'ordinamento è ciò che conta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top