2011-07-11 9 views
5

¿Qué enfoques ha adoptado para coordinar los cambios en la versión y el derecho de autor para grupos de asambleas?¿Cómo coordino la información de la versión de ensamblaje en mi árbol de muchos proyectos de C#?

Tengo un árbol de muchos csprojs cada uno con su propio archivo AssemblyInfo. Como parte de mi proceso de creación, quiero establecer el año y la versión de los derechos de autor. Parece que las siguientes opciones estén disponibles, pero la modificación del archivo es el único que he visto hasta ahora:

  • modificar todos los archivos a través de script
  • Incluir recursos con fecha (una macro, una clase singleton con el público variables estáticas) AssemblyVersion
  • Anulación de línea de comandos (-DAssemblyVersion = "1.0.0.1"?) variables
  • entorno de referencia ([assembly: AssemblyFileVersion("${ENV.VERSION")])

estoy acostumbrado a mantener la fuente t ree limpieza de archivos generados en Java/C++ a través de parámetros de línea de comandos, define y centraliza todas las especificaciones de versión en un solo archivo.

¿Qué enfoque utilizas para mantener las versiones sincronizadas y manejables?

Gracias

Peter

Respuesta

5

En la carpeta superior, coloco un CommonAssemblyInfo.cs que contiene las ... cosas comunes, como los derechos de autor y FileVersion. Este archivo solo contiene algunos atributos predeterminados y es regenerado por un script (un archivo .bat simple) en el servidor de compilación, Hudson en mi caso. Elimine estos atributos comunes en cada uno de los proyectos AssemblyInfo.cs.

En cada proyecto en la solución, agrego este archivo. pero use "Agregar como enlace", disponible en el menú desplegable del botón "Agregar" cuando agrega un archivo existente. es decir, todos los proyectos solo contienen una referencia al mismo archivo, por lo que solo hay un archivo para actualizar.

0

Independientemente de la ruta que toma para actualizar realmente el número de versión, puede utilizar un archivo AssemblyInfo.cs individuales para especificar una versión compartida.

Cree el archivo en algún nivel sobre los otros proyectos, en términos de estructura, luego agréguelo a todos los proyectos (desde Visual Studio), pero al hacerlo, asegúrese de seleccionar 'Agregar como enlace'.

He usado una tarea de MSBuild para manejar la actualización, también, simplemente no puedo pensar en qué motor de compilación usas?

+0

Estamos usando Jenkins en la actualidad y estamos utilizando dos enfoques: 1) msbuildtask actualiza los muchos archivos de AssemblyInfo. 2) CommonAssemblyInfo.cs vinculado a muchos proyectos que se modifica mediante un script de compilación. –

0

En teoría, puede tener un solo archivo de ensamblaje. Solo enlace el archivo en todos los otros proyectos: Agregue el archivo existente >> archivo de enlace en lugar de agregar (botón desplegable)

Cuestiones relacionadas