2010-06-23 15 views
59

¿Por qué System.Version en .NET se define como Major.Minor.Build.Revision? Casi todos (incluyéndome a mí) parecen estar de acuerdo en que la revisión pertenece al tercer lugar, y "compilar" o lo que quieras llamarlo es lo último.¿Por qué System.Version en .NET se define como Major.Minor.Build.Revision?

¿Microsoft incluso usa los números de esta manera fortuita, p. 3.5.3858.2, o son los nombres en sí mismos al revés? Por ejemplo, si tuviera que escribir su propia clase de Versión con el orden Major.Minor.Build.Revision, ¿sería correcto cambiar los dos últimos componentes al convertir a System.Version, o lo ignorará y solo pretenderá los nombres? están al revés?

+4

Esta es la pregunta más inspirado que he visto hoy ... He ¡Siempre quise saber esto y nunca pensé en preguntar! – codekaizen

Respuesta

30

creo que la confusión viene lo que la mayoría considera una "revisión" y what Microsoft does:

  • Cuerpo: Una diferencia en número de compilación representa una recopilación de la misma fuente. Esto sería apropiado debido a cambios en el procesador, la plataforma o el compilador.

  • Revisión: Conjuntos con los mismos números de versión principal, principal y secundaria, pero las diferentes revisiones son totalmente intercambiables. Esto sería apropiado para reparar un agujero de seguridad en un ensamblaje lanzado anteriormente.

El ángulo de corrección de seguridad, probablemente mucho más común para ellos, parece que hay una razón decente para tenerlo en el último lugar, como el cambio "más-menor".

+0

Eso tiene sentido. Pero con su propia clase de versión utilizando el orden major.minor.revision.build, ¿sería apropiado cambiar los dos últimos componentes al convertir a .NET 'System.Version'? ¿O dejarlos solos y dejar que sean llamados por nombres opuestos en cada estructura? –

+0

@Jake - De acuerdo con cada persona que hace la construcción, supongo ... personalmente yo * do * intercambiarlos, mi convención es en realidad 'Major.Minor.Revision.ChangeSet', para que pueda obtener el código exacto que ejecuta nuestro control de fuente solo echando un vistazo al número. Dado que hacemos una integración continua, el conjunto de cambios y el número de compilación son sinónimos para nosotros, tiene sentido ... aunque no estoy seguro de que funcione en todas partes. –

13

¿Microsoft incluso usa los números de esta manera fortuita, p. 3.5.3858.2

Si lo deja como predeterminado, p. especificando [assembly: AssemblyVersion("1.1.*")], luego el tercer número se incrementa cada día, y el cuarto número es el número de segundos desde la medianoche, dividido por dos (para eliminar la ambigüedad si hay más de una compilación en un solo día).

Casi todo el mundo (incluyéndome a mí) parece estar de acuerdo en que la revisión pertenece en tercer lugar, y "compilar" o lo que quieras llamar es la última.

Microsoft parece estar utilizando "compilación" como sinónimo de "día": tal vez eso está relacionado con la idea de "compilaciones diarias"; y una "revisión" es entonces otra versión de la compilación (diaria).

+0

No es realmente lo que la pregunta está haciendo. Él no está preguntando qué son, pero ¿por qué están en este orden particular? –

+0

@Alastair Pitts - He agregado mi respuesta para intentar abordar eso. – ChrisW

+0

He modificado mi voto negativo. :) –

22

Me doy cuenta de que voy a la fiesta un poco tarde, pero quería compartir mi opinión sobre por qué el orden de compilación y revisión es "incorrecto". No es tanto que estén en el orden incorrecto, sino que no están en ninguna orden.

La versión de un conjunto, cuando se trata de ella, es Major.Minor. Del mencionado link, Microsoft dice: "Las versiones posteriores de un ensamblaje que difieren solo por los números de compilación o revisión se consideran actualizaciones Hotfix de la versión anterior ". [Mi énfasis]

El compilación representa una recompilación de la misma fuente.La Revisión representa un cambio de código, pero que es totalmente intercambiable con otras revisiones de la misma versión [Major.Minor]. Pero ninguno tiene prioridad sobre el otro.

Así, en resumen, no piensan en ella como:

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

Pero en su lugar:

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

Esta explicación hace que las cosas sean menos confusas. Fue realmente difícil verificar que tengo las mismas revisiones .Net instaladas en diferentes máquinas. Específicamente, el número de "Revisión" parece ser siempre diferente entre las versiones del SO, mientras que los números Mayor, Menor y Compilación son todos iguales. P.ej. en Windows 8.1, mi "... \ Framework64 \ v4.0.30319 \ clr.dll" está en 4.0.30319.34014, pero en un servidor Win2k8 r1, el archivo está en 4.0.30319.18444. – Granger

Cuestiones relacionadas