2012-09-06 13 views
8

estoy tratando de encontrar una manera más significativa para manejar versiones de mi aplicación y me llegó acrossed este artículo KBVersión de conjunto fijo con la versión de archivo incrementado automáticamente?

http://support.microsoft.com/kb/556041

Básicamente se trata de recomendar que la versión Asamblea fijarse y ser imcremented la versión del archivo para cada construcción. Ahora, esto tiene mucho sentido para mí, pero por mi vida parece que no puedo implementarlo.

El siguiente fragmento de código automático incrementa la versión de conjunto y FileVersion.

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

Si bien esta próxima parece establecer una versión Asamblea fija de 1.0.0.0 y una versión de archivo fijo de 1.0.*.

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

Por cierto, la versión del producto en la ficha Detalles de las propiedades del archivo lee 1.0.* ahora también. Ahora puedo arreglar la versión del producto en las propiedades del archivo con esto ...

[assembly: AssemblyInformationalVersion("1.0")] 

Pero eso no ayuda con mi tarea original. Por curiosidad intenté a continuación y la versión del archivo cambió a 2.0.*, por lo que al menos está usándolo. Simplemente no se incrementa automáticamente.

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

Así que de lo que he entendido el único número de versión que incrementos de automóviles es la versión Asamblea, pero por si acaso no se ha especificado una versión del archivo que se establece en la misma que la versión de ensamblado.

¿Alguien sabe de una manera de incrementar automáticamente la versión del archivo mientras se repara la versión del ensamblaje?

Respuesta

11

Sí, es un poco tonto, Microsoft parece haberlo hecho al revés. AssemblyVersion se utiliza en el sistema de versiones de ensamblado .NET, por lo que nunca debe autoincrementarlo, pero AssemblyFileVersion se escribe en la entrada de la versión del archivo en el recurso de versión del archivo, por lo que es razonable esperar que siempre aumente automáticamente de forma predeterminada.

Estoy seguro de que hay algunos sistemas de compilación de terceros que pueden hacer esto por usted, pero acabo de escribir una pequeña línea de comando de la aplicación C# para hacerlo, y se ejecuta en cada proyecto como parte de nuestro proceso de construcción. Es muy sencillo:

  1. Lea el archivo AssemblyInfo.cs línea por línea.
  2. Realice una búsqueda RegEx para la línea AssemblyFileVersion, capturando las cuatro partes de la versión en grupos de captura independientes. Podría analizarlo usted mismo, pero una expresión regular hará toda la detección y el análisis de una sola vez, por lo que parece tonto no aprovechar.
  3. Una vez que tenga los cuatro enteros, implemente su propia lógica de incremento como mejor le parezca.
+2

Entonces, ¿no fue solo yo quien encontró esto raro? ¿Microsoft realmente agregó una característica que no recomiendan que use? Ok, bueno, supongo que el siguiente paso es ver si puedo hacer esto usando tareas de compilación ... –

Cuestiones relacionadas