2009-09-10 7 views
7

Tengo muchas ganas de implementar una compilación diaria para un próximo proyecto.¿Cuál es la forma correcta de manejar la versión de ensamblaje?

Pero antes de hacer eso, necesito saber cómo versionar correctamente un conjunto.

Tengo las siguientes inquietudes:

  • En caso de que cada conjunto tiene un número de versión independiente o en caso de que todos comparten la misma versión?
  • ¿Debo usar una versión * para compilación y revisión?
  • ¿La revisión es relevante para la compilación diaria?

Respuesta

8

Estamos sello de todas las asambleas dentro de nuestros productos con el mismo número de versión usando los siguientes pasos:

  • Enlace todos los conjuntos a un AssemblyInfoCommon.cs que contienen la información de número de versión : ver here para una ejemplo.

  • Generar el archivo AssemblyInfoCommon.cs como parte de la construcción utilizando (en nuestro caso) la tarea de NAnt asminfo, Control de Velocidad .NET y la revisión de SVN etiquetadora

En nuestro caso, Don no use la * versión. Todas las versiones implementadas se crean en el servidor de compilación. No nos preocupa el número de versión en nuestros escritorios.

+0

+1 para números de compilación por el servidor de compilación. Las compilaciones deben ser repetibles, lo que significa que deben tener un guion, y hacerlas en su escritorio hace que sea muy fácil ser flojo y "solo saber" cómo hacerlo en lugar de tomarse la molestia de crear un guión de compilación. – gregmac

0

Así Cada conjunto debe tener la misma versión que es típicamente una combinación de la versión de lanzamiento es decir, 3,4 + el número de compilación que es una secuencia que representa el número de veces que la liberación se ha compilado en el servidor de compilación. La revisión es relevante porque demuestra el número de compilaciones que ha creado para esa versión. Realmente puedes hacer esto en una de 2 maneras. La primera forma sería que si planificaba un lanzamiento, es decir, 3.4, cuando empiezas a trabajar en ese lanzamiento, ese es tu número de versión principal y tu número de versión menor se incrementa con la compilación. Otra forma de hacerlo es controlar estrictamente las versiones de compilación en el sentido de que cuando esté listo para realizar su lanzamiento a QA/Regression, establezca su versión principal en 3.4 y deje su número de versión menor en 0. Mantiene las cosas fuertemente controladas de esta manera hasta que sueltes De esta forma puede controlar la numeración de su paquete de servicio a través del número de versión menor. Espero que esto ayude.

2

La respuesta realmente depende de lo que está tratando de lograr con los números de versión del ensamblaje. Si está realizando una implementación de ClickOnce y desea realizar descargas independientes de ensamblados actualizados, necesitará tener cada ensamblaje independientemente versionado; de lo contrario, creo que a menudo es bueno tener versiones de ensamblaje que coincidan con el número de versión de software. En escenarios más complejos puede necesitar otra estrategia.

Un esquema que utilicé en una empresa anterior era major.minor.revision.build - por lo que en la versión 1.0 del producto, la versión del ensamblaje y la versión del archivo de ensamblaje en cada ensamblaje era 1.0.0.1129 (por ejemplo). Esto hizo que fuera más fácil hacer coincidir los ensamblajes que formaban parte de la versión del software, hasta el número de compilación. Logramos esto utilizando una búsqueda previa a la compilación y reemplazamos cada archivo AssemblyInfo.cs para reemplazar un token con los números de versión proporcionados por nuestro proceso de compilación automatizado.

0

Normalmente, estoy de acuerdo en que todos los ensamblajes deben tener el mismo número de versión; sin embargo, haría una advertencia a eso. Si uno de los ensamblajes se usa en otro lugar fuera de este proyecto o si se considera su propio proyecto, debe tener su propio número de versión. También debería ser movido fuera de esa solución y dentro de sí mismo. La única razón por la que menciono esto es porque he visto numerosas ocasiones en las que las personas tienen un ensamblaje que se usa en un par de otros lugares, pero principalmente en un solo lugar, y tratan de mantener la versión correcta. Es una mala idea hacer eso. Creo que el Principio de Responsabilidad Individual también se aplica a nivel de solución/proyecto.

En cuanto a la numeración, estoy de acuerdo con Guy Starbuck (major.minor.revision.build). Esa es la forma en que siempre lo he hecho y siempre ha funcionado bien.

0

Tenemos una aplicación grande (cientos de ensamblajes) con versiones frecuentes (aproximadamente 1 por mes). Fuimos por el "dar a cada ensamblaje la misma versión", pero es una fuente constante de frustración para mí que los ensamblajes de una versión sean completamente incompatibles con los de otra, a pesar de que las interfaces de estos componentes cambian muy pocas veces (o nunca). Si es así, puede beneficiarse de los ensambles de versiones por separado: cada vez que actualice su ensamblaje solo tendrá que incrementar el número de versión en los casos en que realmente desee romper el ensamblaje (por ejemplo, si la interfaz cambia, o los cambios son por lo demás significativos en el sentido de que desea evitar que alguien use accidentalmente la versión anterior).

Cuestiones relacionadas