2010-03-09 10 views
5


Estoy creando una solución C# en Visual Studio 2008 que tiene varios proyectos y dependencias de proyectos.
Estoy buscando una manera de cambiar los números de versión dll SOLAMENTE cuando cambia el código que crea el proyecto.

Actualmente uso Beyond Compare para comparar mi versión construida localmente con el sistema de archivos de producción. El objetivo es implementar ÚNICAMENTE dlls actualizados. Estoy usando números de versión autoincrementing, y cada vez que abres Visual Studio y haces una compilación, todos los números de la versión dll se incrementan. Lo mismo ocurre con una reconstrucción completa de la solución y cuando un desarrollador diferente realiza una compilación e intenta implementarla.

¿Hay alguna manera de configurar Visual Studio para INCREMENTAR UNICAMENTE el número de compilación en función de los cambios en el contenido del archivo? ¿Hay un complemento que haga esto?

Parece que una comparación binaria de estos archivos también fallará debido a los diferentes números de versión dentro de las DLL. ¿Alguien sabe de una mejor herramienta comparar solo los contenidos de dlls?

Gracias de antemano.Cómo configurar números de compilación en Visual Studio para habilitar la comparación dll

Respuesta

1

Una opción es pasar a una solución de integración continua, como Cruise Control .Net, esto permite que las compilaciones se activen al registrarse en un sistema de control de origen.

En cuanto a versiones de montaje lo que suelo hacer es crear un único SolutionVersion.cs (para reemplazar la versión de ensamblado predeterminado cs) que está vinculada a cada proyecto (utilice el Agregar elemento existente, sino cambiar el botón para añadir enlace)

Entonces utilizar una tarea de NAnt o MSBuild para tomar el número de etiqueta acumulación control de crucero y sobrescribir los SolutionVersion.cs verison números antes de la solución se construye

de esa manera puedo tener una asamblea y rastrear de nuevo a través del código Versión de compilación de CruiseControl (incluso mejor, generalmente obtengo CC.net para etiquetar la fuente con el mismo número en control de fuente)

+0

+1 para ccnet. Para las versiones de ensamblaje, usamos el número de revisión de subversión.Para los instaladores, tenemos proyectos de ccnet que requieren una compilación forzada, por lo que el instalador tiene una versión basada en el número de compilación de ccnet. – Pedro

+0

Tiene razón, hacer que el servidor de compilación lo haga es la mejor opción. el archivo de versión enlazado se lleva la mayor parte del camino, pero TODAS las versiones dll cambiarían con cada compilación si está usando el número de compilación. utilizar el número de rev del control de origen parece ser más complicado de obtener en la mayoría de los escenarios, y luego más complejo usar el último número rev de solo archivos en un proyecto específico. – jaminto

+0

Estoy abandonando el requisito de implementación parcial de solo dlls actualizados, implementar todos los dlls de una nueva versión está bien, y todos tendrán números de versión actualizados en función del número de compilación. http://www.jetbrains.com/teamcity/ es mi servidor de compilación de elección ahora, puede ser tuyo también. – jaminto

0

No es exactamente lo que estás preguntando, pero encontré esto útil al tratar con soluciones grandes: Versioning Controlled Build. Según su documento, detecta los cambios que le interesan: "Si hay un archivo con una marca de tiempo más reciente (lo que significa que el código fuente ha sido modificado después del cambio de la versión anterior), el proyecto se marcará para la actualización de la versión "

La solución recomendada y compatible sería que su proyecto NO aumente automáticamente el número de compilación utilizando Visual Studio. Entonces necesitaría manualmente o escribir un script de precompilación/MS Build Task para hacer el incremento.

0

Hay una interesante muestra en este codeproject article que se debe comprobar que funciona ... se trata de una tarea prebuild que realiza la tarea de actualizar el número de compilación basado en el día del año

0

sugeriría que busca en las opciones que su sistema de control de revisión proporciona para incrustar la información de revisión en los archivos fuente. Tuve suficientes problemas con el autoincremento en el pasado que me prometí nunca más. En estos días, prefiero algo un poco más concreto que un número de compilación e incrusto identificadores únicos en cada producto del sistema de compilación.

Describo mi propio sistema en Embedding mercurial revision information in Visual Studio c# projects automatically. Si bien mi solución probablemente no es adecuada para usted, se sugirieron otras opciones interesantes en respuesta a mi pregunta, por lo que algunas de las soluciones que rechacé pueden serle útiles, incluso si tiene que adaptarlas a cualquier VCS que tenga. utilizar.

Cuestiones relacionadas