c# - .NET: números de revisión grandes en AssemblyVersionAttribute
svn version-control (4)
Tenemos la convención de versionar nuestras compilaciones como [principal]. [Menor]. [Micro]. [Revisión], p. Ej. 2.1.2.33546.
Nuestro build-script actualiza automáticamente un archivo AssemblyInfo.cs que contiene
[assembly: AssemblyVersion("x.y.z.w")]
para incrustar el número de versión en el conjunto.
Pero nuestro repositorio de Subversion acaba de alcanzar la revisión # 65535, que rompió nuestra compilación.
Resulta que cada número en el número de versión tiene un valor máximo de 65534 (probablemente debido a una restricción de Windows).
¿Has encontrado este problema? ¿Alguna buena solución / solución alternativa?
Nos gusta el esquema de incrustar el número de revisión y obviamente no podemos simplemente reiniciar nuestro servidor Subversion :-)
Decidimos usar la misma convención, y debido a las limitaciones de los números de versión de Windows, elegimos dejar caer la parte "micro" de nuestros números de versión para preservar el número de revisión. Nuestros números de versión son ahora [major].[minor].[revision / 10000].[revision % 10000]
, por lo que los ensamblados a partir de la revisión 65535 tienen la versión 2.01.6.5535.
Un poco más de información de antecedentes:
¿Por qué los números de compilación están limitados a 65535?
Como es poco probable que esto cambie, sus opciones son:
- Tome el Modulo de Revisión 65535, lo que significa que ha vuelto a 1
- Use el Micro-Campo en su número de versión para dividir el número de versión dividiendo la revisión por 1000. Eso significa que su versión podría ser 1.0.65.535
- No almacene la Revisión SVN en AssemblyVersion, sino en AssemblyInformationalVersion . De esta forma, su Aplicación aún puede acceder a ella para fines de visualización, aunque ya no puede usar el Explorador de Windows para comprobar rápidamente la Revisión de SVN.
- No almacene la Revisión SVN en AssemblyVersion, sino en los campos AssemblyProduct o AssemblyDescription. De nuevo, de esa manera su Aplicación aún puede acceder a ella, pero también Explorer la mostrará en la Hoja de propiedades.
Una opción podría ser simplemente usar [AssemblyFileVersion]
; esto aún genera una advertencia, pero se desarrollará, al menos:
[assembly: AssemblyFileVersion("1.0.0.80000")]
Según MSDN , los componentes del número de versión AssemblyVersionAttribute están limitados a UInt16.MaxValue - 1
por los metadatos del ensamblado , es decir, no se pueden almacenar números más grandes en un archivo de ensamblaje. La versión del archivo, como sugiere Marc Gravell, podría ser suficiente para usted, dependiendo de quién lea su número de versión.