2009-06-10 18 views
18

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.¿Debería AssemblyInfo.cs colocarse en el control de versión?

Así que todo está alineado
- etiqueta Construir CCNet
- Ejecutable (Información de ensamblado)
- Control de versiones (etiqueta subverson)

Ahora donde tengo un problema es si quiero tratar de reconstruir una vieja imagen 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 construida durante la compilación CC o en una fecha posterior cuando se realiza la salida 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 versión correcta?

Gracias, Liam

Respuesta

2

Siempre que sea revisada. De hecho creo que este es el comportamiento por defecto con el control de código fuente Team System.

+0

Estoy usando Subversion y CrusieControl.NET. Construyo usando un script NAnt. Todo lo que he leído es que AssemblyInfo.cs es una salida generada durante el proceso de compilación.Por lo que la secuencia de construcción es: - CCNET (SVN gatillo por un registro de entrada @say versión del repositorio 100) de NAnt llama msbuild llamada AssemblyInfo.cs se crea afgter la acumulación hacer ahora el check-in AssemblyInfo.cs ? Si está registrado, el repositorio estaría en Rev 101. Por lo tanto, mi objetivo de hacer que AssemblyInfo.cs coincida con la revisión de compilación no se cumple. ¿Cómo hago esto? –

+0

Creo que la razón por la que no desea verificar en AssemblyInfo.cs en su caso es porque su sistema de CI lo está generando. Con una compilación normal que incluye la forma en que los servidores de compilación TFS lo hacen, AssemblyInfo.cs se registra y no se genera para cada compilación. – majinnaibu

7

No copie AssemblyInfo.cs en absoluto, o ponga "versión de desarrollador" de ellos en el repositorio y tenga CruiseControl.Net svn-revert them después de la compilación (hago lo posterior para que las compilaciones hechas en las estaciones de trabajo de los desarrolladores fácilmente extinguible de los "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 MSBuild/NAnt a mano, simplemente pase a CCNetLabel configurado en el valor apropiado y obtendrá las mismas versiones de ensamblaje generadas que con el construcción invocada desde CruiseControl.Net (MSBuild: /p:CCNetLabel=1.4.2.333, NAnt: -D:CCNetLabel=1.4.2.333).

7

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 los proyectos que incluyen CommonAssemblyInfo.cs no tengan atributos duplicados en AssemblyInfo.cs.

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

0

Tenemos una secuencia de comandos MSBuild que genera todos los archivos AssemblyInfo.cs necesarios 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 de proceso por lotes para encargarse de la generación de archivos AssemblyInfo.cs para que los desarrolladores no tengan que preocuparse por los detalles.

Cuestiones relacionadas