Pregunta

¿Por qué es System.Version en .NET define como Major.Minor.Build.Revision? Casi todo el mundo (incluido yo) parece estar de acuerdo en que la revisión pertenece en el tercer lugar, y "acumulación" o lo que desea llamar pertenece pasado.

¿Microsoft incluso utilizar los números de esta manera fortuita, por ejemplo, 3.5.3858.2, o son los propios simplemente hacia atrás nombres? Por ejemplo, si usted fuera a escribir su propia clase de versiones con el fin Major.Minor.Build.Revision, sería adecuado para intercambiar los dos últimos componentes al convertir a un System.Version, o haga usted lo ignora y fingir los nombres son al revés?

¿Fue útil?

Solución

Creo que la confusión viene lo que la mayoría considera una "revisión" y lo microsoft hace :

  • Construir: Una diferencia en número de compilación representa una recopilación de la misma fuente. Esto podría ser adecuado a causa de procesador, plataforma, o los cambios del compilador.

  • Revisión: Conjuntos con el mismo nombre, los números mayor y menor, pero la versión diferentes revisiones están destinados a ser totalmente intercambiables. Esto podría ser adecuado para arreglar un agujero de seguridad en un ensamblaje publicada anteriormente.

El ángulo de corrección de seguridad, probablemente mucho más común para ellos, parece ser una razón decente para tenerlo en el último lugar, como la "más pequeña" cambio.

Otros consejos

Me da cuenta de que estoy llegando a la fiesta un poco tarde, pero quería compartir mi dos peniques sobre por qué el orden de construcción y revisión son "mal". No se trata tanto de que están en el mal orden, pero que no están en cualquier orden.

La versión de una asamblea, cuando se llega a esto, es MAJOR.MINOR. De lo anterior , Microsoft dice: "Las versiones posteriores de una asamblea que se diferencian sólo por números de compilación o de revisión se consideran actualizaciones de revisión antes del versión ". [El énfasis es mío]

El Construir representa una recopilación de la misma fuente. El Revisión representa un cambio de código, pero uno que es totalmente intercambiables con otras revisiones de la misma versión [MAJOR.MINOR]. Pero tampoco tiene prioridad sobre el otro.

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

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

Pero en su lugar:

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

¿Microsoft incluso utilizar los números de esta manera fortuita, por ejemplo, 3.5.3858.2

Si lo deja por defecto, por ejemplo, especificando [assembly: AssemblyVersion("1.1.*")], a continuación, el tercer número incrementos de 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 uno construye en un solo día).

  

Casi todo el mundo (incluido yo) parece estar de acuerdo en que la revisión pertenece en el tercer lugar, y "acumulación" o lo que desea llamar pertenece pasado.

Microsoft parece estar usando "acumulación" como sinónimo de "día": tal vez que está relacionado con la idea de "construcciones diarias"; y una "revisión" es, por tanto, a continuación, otra versión de la construcción (todos los días).

respuesta tardía, pero me siento las otras respuestas podrían ampliarse en un poco.

Los términos "construir" y "revisión" es sólo la terminología Microsoft. La clase System.Version no se preocupa de alguna manera la forma de asignarlos.

En cuanto a cambiar el orden de las partes para que coincida con su propia terminología, diría que se debe básicamente ignorar por completo las palabras y en su lugar considerar lo que el System.Version realmente define:

  • Un formato de cadena que puede analizar y generar:

    major.minor[.build[.revision]]
    

    Esto significa que si usted está acostumbrado a tener que propia versión con formato de x.y.z.w, entonces usted debe crear una instancia de la clase versión de esta manera:

    new Version(x, y, z, w)
    

    Cualquier otra orden de los parámetros no coincidirá con lo que Parse () y toString () haría. Si cambia z y, a continuación, ToString () haría x.y.w.z salida w que sería confuso para todos si usted espera x.y.z.w.

  • comparación de versiones y clasificar orden, mediante el cual se clasifican las versiones por primera vez por importante, y luego por menor, a continuación, construir, a continuación, la revisión, ya que la mayoría de nosotros lo haría esperar. Es decir, 1.2.5 es posterior a 1.2.3.7.

    Así que si el estilo de su cadena de versión 1.2.6.4 y como quiera que sea considerados más nuevo que 1.2.5.8, entonces no cambiar el orden de las partes en el constructor versión.

En pocas palabras - mientras que las palabras mayor / menor / build / revisión podrían dar una pista acerca de qué número debe aumentarse teniendo en cuenta la cantidad de cambios, la terminología tienen muy poco impacto en cómo se utiliza realmente la clase. El formateo y la clasificación es lo que importa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top