Pregunta

Tengo un proyecto VS2008 escrito en C # con varios ensamblajes. Me gustaría tener una manera simple de administrar los números de versión entre todos los diferentes ensamblajes y una forma de incrementar automáticamente el número de compilación y guardarlo en el número de versión de cada ensamblaje.

Supongo que este es un problema con la mayoría de los proyectos, ¿así que presumiblemente se ha resuelto antes?

¿Alguna sugerencia sobre cómo puedo simplificar la administración de los recursos de versión de mi proyecto?

¿Fue útil?

Solución

Utilizo un archivo .cs en el nivel de solución que está vinculado por todos los proyectos en la solución que contiene las siguientes líneas:

using System.Reflection;
[assembly : AssemblyVersion("1.2.3.*")]

Y asegúrese de eliminar el atributo AssemblyFileVersion del archivo AssemblyInfo de su proyecto.

Otros consejos

Coloque un archivo en la solución, llame a esto " SolutionInfo.cs " (Supongo que C #, también funcionaría en VB). En esto pon todas las propiedades que tienes en común. Comience con AssemblyVersionAttribute.

Luego, en cada proyecto enlace a esto seleccionando agregar elemento existente a cada proyecto, pero en lugar de hacer clic en agregar, use el menú desplegable para agregar como enlace.

Tenemos un único archivo AssemblyInfoGlobal.cs a nivel de solución, como las otras respuestas. Luego tenemos como parte de nuestro script de compilación una pequeña aplicación que toma la CCNetLabel que CruiseControl.net define (y usa la etiqueta predeterminada para generar las etiquetas) y extrae el archivo global, modifica el número de versión y luego vuelve a verificar el archivo global .

Algunos de nuestros proyectos tienen múltiples soluciones, por lo que el archivo global se encuentra por encima del nivel de solución en la estructura del directorio, lo suficientemente alto como para que todo lo que necesita esté debajo de él.

También actualizamos los números de versión de los proyectos de implementación: el número de estos se encuentra en el archivo VDProj, pero no estoy seguro de que los encontrará en las versiones express; creo que es una función profesional ascendente completa. Y algunos proyectos tienen una docena de proyectos de implementación, pero no hay una manera fácil de externalizar la versión númerof del archivo VDPROJ. (¿o hay?)

Luego ocurre la compilación, lo que significa que todas las salidas de la compilación tienen exactamente el mismo número de versión, en cualquier momento podemos obtener la versión del MSI o ensamblado y sabemos exactamente qué fuente se usó para compilar esa salida.

  

using System.Reflection; [assembly : AssemblyVersion("1.2.3.*")]

Solo un comentario sobre esto, el número de versión autogenerado se cicla. Entonces, si está buscando poder realizar una versión tal que una compilación de ayer tenga una versión 1.2.3.X donde X & Lt; X una construcción hoy, entonces este no es el camino a seguir.

Para lograr este uso

[assembly : AssemblyVersion("1.2.*")]

Esto te dará la versión 1.2.X.Y donde la combinación de X.Y es más grande hoy que ayer. Supongo que X.Y son una función de fecha y hora respectivamente

Puede escribir una tarea personalizada de MSBuild para hacer esto. Eche un vistazo a este enfoque

Puede usar asteriscos en su AssemblyInfo.cs:

// Version information
[assembly: AssemblyVersion( "1.0.*" )]

Aumentará sus números de versión automáticamente. Para compartir un número entre todos los ensamblados ... No estoy seguro, pero tal vez use el atributo mencionado en un archivo compartido.

He usado la svnversion Tareas de la comunidad MSBuild para hacer algo como esto, seguí las instrucciones aquí Aunque la forma en que lo hago no abarca múltiples ensamblajes.

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