Pregunta

03Cp> Tenemos un proceso de construcción nocturno que versiones automáticamente todas las proyecciones C ++. Así es como funciona. Hay un archivo de encabezado común VersionNumber.h que tiene un #define específico para el número de versión. Los comprueban los comprobaciones de este archivo, incrementa el entero detrás de ese #define y lo controlan. Todos los proyectos visuales C ++ #include que encabezados en sus archivos de recursos y usan que definen para especificar la versión (la versión es Smtth como 1.0.3.ThatNumber).u003C/

03Cp> Hasta ahora tan bueno. Ahora me gustaría tener lo mismo para las bibliotecas de clase C # construidas en la misma construcción diaria. Actualmente todos tienenu003C/

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

03Cp> En el ensamblaje, los archivos y las bibliotecas terminan con 1.0.HorribleNumber.AnotherHorribleNumber como la versión y los dos números no se correlacionan con el número utilizado por los proyectos C ++.u003C/

03Cp> ¿Cómo tengo la misma versión de versión automática determinista en mis proyectos C # con un esfuerzo mínimo?u003C/

¿Fue útil?

Solución

03Cp> En primer lugar, puede especificar la versión completa de la siguiente manera:u003C/

[assembly: AssemblyVersion("1.0.9.10")]

03Cp> En segundo lugar, un enfoque común para hacer que esto sea un poco más sencillo (y hace eco de su enfoque de C ++) es tener un único archivo Version.cs (nombre no importante) que se encuentra en una ubicación común que tiene los atributos de la versión. Luego, puede u003Cstrong>03Ca href="https://blogs.msdn.microsoft.com/zainnab/2010/11/12/linked-items-in-projects/" rel="nofollow noreferrer">Agregue este archivo como enlaceu003C/u003C/strong> a todos sus proyectos CS, recordando eliminar los atributos de la versión de sus archivos ensedtingInfo.cs. De esta manera, solo tiene un solo archivo para actualizar (antes de ejecutar su compilación). También puede colocar otros atributos de ensamblaje comunes en su archivo Version.cs, tales como: neutralresourceslanguage o CL.u003C/

03Cp> Si no usa un solo enfoque "Versión.CS", puede trabajar recursivamente a través de su estructura de directorio de código fuente y actualizar archivos de ensamblaje individualmente (antes de ejecutar su compilación).u003C/

03Cp> Puede que no sea relevante para usted, pero los números de versión (en la ensamensiva) tienen un rango máximo de 16 bits. He visto que esto se convierta en un problema donde se han utilizado fechas para estos números. Si desea tener más latitud, entonces laFileversión de ensamblaje no tiene esta restricción, sino que es puramente con fines informativos solo en .NET, en lugar de parte de la identidad de la Asamblea. Es común establecer la configuración de ensamblaje y ensamblador a los mismos valores que algunas herramientas que muestran las combinaciones de estos.u003C/

03Cp> Vea lo siguiente para más información sobre la ensamblaje de Enseñar VSFileversión:u003C/

03Ca href="https://stackoverflow.com/questions/64602/what-are-differences-between-assemblyversion-assemblyfileversion-and-assemblyinf">¿Cuáles son las diferencias entre la ensambladura, la filar de ensamblaje y la formación de ensamblaje?u003C/

Otros consejos

03Cp> Utilizamos FinalBuilder para las compilaciones automatizadas (tenemos la llamada de teamcity), y hace este tipo de cosas automáticamente (es decir, puede obtener un número de compilación de algún otro lugar (archivo INI, variable de entorno, línea de comandos, lo que sea) y luego actualice todos los versiones de montaje para usted con el número de compilación).u003C/

03Cp> Obviamente, no la única forma de hacerlo, pero si no ha usado algo como FinalBuilder, luego le damos un intento: nuestra experiencia es que comienza a preguntarse por qué pasó anteriormente con tanto tiempo que es inteligente con makeFiles y archivos de lotes ...u003C/

03Cp> Pero si no quiere hacerlo, ¿puede obtener el mismo proceso que genera / modifica el archivo VersionNumber.h para escupir también VersionNumber.cs, con una línea de ensamblaje en él? Luego, puede incluir ese archivo en su proyecto.u003C/

03Cp> La Directiva de la ensambladura no necesita estar en el mismo archivo que todo el resto de sus cosas de ensamblaje.u003C/

03Cp> Puede hacer algo como lo hace para su técnica de C ++, pero busque la cadena "assembly: AssemblyVersion( y reemplace el número en las cotizaciones con el número de versión completo y requerido.u003C/

03Cp> En C #, el comodín en el número de la versión le dice al compilador que actualice automáticamente el número de versión: si no hay comodín, solo usará el número completo suministrado.u003C/

03Cp> p.eju003C/

[assembly: AssemblyVersion("1.0.3.10")]

03Cp> Siempre usará ese número de versión hasta que lo cambie en el archivo.u003C/

03Cp> Puede configurar la versión de ensamblaje desde otro archivo, agregando un enlace a él. Una solución similar esu003C/

03Ca href="http://cs.blueberryislandmedia.com/blogs/blueberries/archive/2010/02/04/managing-assembly-version.aspx" rel="nofollow noreferrer">LINK TEXTu003C/

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