svn version-control cruisecontrol.net assemblyinfo

svn - ¿Debería AssemblyInfo.cs colocarse en el control de la versión?



version-control cruisecontrol.net (4)

Tengo un sistema de compilación automatizado usando CruiseControl. Estoy usando SvnRevisionLabeller para utilizar la cadena de versión. Con esta cadena puedo usar nant para actualizar AssemblyInfo.cs, así que cuando lo construyo tengo la cadena de compilación correcta. También puedo usar esta etiqueta CC para etiquetar el repositorio de subversión.

Entonces todo está alineado
- Etiqueta CCNet Build
- Ejecutable (Información de la Asamblea)
- Control de versiones (etiqueta subverson)

Ahora, tengo un problema si quiero intentar reconstruir una imagen anterior del repositorio. Como AssemblyInfo.cs no está bajo el control de versión, sino más bien como un archivo generado, cuando intente compilar, la información de versión no será la misma que cuando esta versión del repositorio se creó con CruiseControl. Me gustaría poder generar exactamente la misma imagen independientemente de si fue desarrollada durante la compilación CC o en una fecha posterior al realizar una comprobación desde Subversion.

Sé que a menudo no se recomienda, pero ¿debo registrar el archivo assemblyInfo.cs después de cada compilación para que cuando construya posteriormente desde un check-out svn se use la información de la versión correcta?

Gracias, Liam


Siempre lo tengo registrado. De hecho, creo que este es el comportamiento predeterminado con Team System Source Control.


O no actualices AssemblyInfo.cs en absoluto, o pon la "versión de desarrollador" de ellos en el repositorio y haz que CruiseControl.Net svn-revierte después de la compilación (hago lo posterior para que las compilaciones creadas en las estaciones de trabajo de los desarrolladores se puedan extinguir fácilmente del "oficiales" descargados de CruiseControl.Net).

En cuanto a la reproducción de las mismas etiquetas de construcción más adelante, ya tiene que hacer la reconstrucción llamando manualmente a MSBuild / NAnt, simplemente pase a CCNetLabel establecido en el valor apropiado y obtendrá las mismas versiones de ensamblado generadas que con la creación invocada por CruiseControl. .Net (MSBuild: /p:CCNetLabel=1.4.2.333 , NAnt: -D:CCNetLabel=1.4.2.333 ).


Utilizo un archivo CommonAssemblyInfo.cs al que agrego un enlace en cada proyecto.

El único atributo que tengo en este archivo es AssemblyFileVersion y hago que CC.Net / Msbuild actualice la versión en cada compilación.

Asegúrese de que ningún proyecto que incluya CommonAssemblyInfo.cs no tenga atributos duplicados en AssemblyInfo.cs.

Si revisas el código fuente de CC.Net, verás que es así como tienen configurada la compilación.


Tenemos un script MSBuild que genera todos los archivos necesarios de AssemblyInfo.cs antes de la compilación. De esta manera también puedo usar el número de revisión SVN en las versiones de ensamblaje. Los archivos AssemblyInfo.cs no se registran en SVN (se ignoran para que no molesten a las personas) sino que se generan antes de compilarse (no importa si se trata de un script de compilación automatizado o de VS).

También proporciono un archivo por lotes para encargarme de la generación de archivos AssemblyInfo.cs para que los desarrolladores no tengan que preocuparse por los detalles.