2012-04-19 13 views
43

Dice en AssemblyInfo.cs para proyectos de C# que es posible especificar información de la versión con *AssemblyInfo información de la versión asteriscos

// Version information for an assembly consists of the following four values: 
// 
//  Major Version 
//  Minor Version 
//  Build Number 
//  Revision 
// 
// You can specify all the values or you can default the Revision and Build Numbers 
// by using the '*' as shown below: 
[assembly: AssemblyVersion("1.0.0.0")] 
[assembly: AssemblyFileVersion("1.0.0.0")] 

lo cambié a esto:

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

y éste es el error Obtengo del compilador:

error CS0647: Error emitting 'System.Reflection.AssemblyVersionAttribute' attribute -- 'The version specified '1.0.*.*' is invalid' 
warning CS1607: Assembly generation -- The version '1.0.*.*' specified for the 'file version' is not in the normal 'major.minor.build.revision' format 

¿Cómo funciona (incluso?) Funciona?

Respuesta

61

Sintaxis (ver MSDN) para el número "automático" construir puede ser:

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

o:

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

* significa después de esto todo es automático. No se puede tener número de compilación automática y número de revisión fija a continuación, esta sintaxis no es correcta:

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

Para el AssemblyFileVersionAttribute no se puede utilizar el carácter especial * lo que tiene que proporcionar un número de versión completa y válida . Tenga en cuenta que si no proporcionan unaAssemblyFileVersionAttribute entonces obtendrá el derecho FileVersionInfo de forma automática (con la misma versión de AssemblyVersionAttribute). Es necesario especificar que el atributo sólo si es necesario establecer una versión diferente.

+3

no funciona para mí. La versión del archivo en la DLL siempre es 1.0.0.0 y la versión del producto en la DLL es 1.0. * O 1.0.0. *? – mare

+1

¿qué pasa con , también muestra el mismo error inválido – shyamnathan

+1

@shyamnathan sí, cada parte debe ser un entero sin signo de 16 bits - 1 por lo que no puede usar nada más que' * '(y solo en' xy * ' o 'xyz *' form). Por supuesto, a menos que sea un marcador de posición y aplique algún tipo de preprocesamiento (útil si no tiene una información de ensamblado compartida y desea mantener la versión alineada en diferentes ensamblajes). El mensaje de error es bastante genérico , cualquier número de versión no válida dará ese mensaje, cualquiera que sea el motivo. –

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

sólo recuerda a comentar la línea AssemblyFileVersion, de lo contrario la versión de ensamblado generado automáticamente siempre será "1.0.0.0".

+1

¿Por qué debería [s] hacer eso? – Default

+0

la versión del ensamblaje generado automáticamente siempre será "1.0.0.0", esto le sucede a mi solución. – chamos

+0

Permítame sugerirle que "edite" su respuesta y agregue esa información también. "Puede no funcionar como se espera" no explica exactamente por qué el OP debería seguir esta sugerencia, en comparación con la respuesta que [Adriano] (http://stackoverflow.com/a/10229738/238902) dio. – Default

3

En mi opinión, el uso de [assembly: AssemblyVersion("x.y.z.*")], Patch no debe numerarse automáticamente. Por ejemplo:

[assembly: AssemblyVersion ("1.2.3 *")]

El uso de '*' en AssemblyVersion es bueno, pero siguen seemver.org debemos utilizar * para la parte revision de estructura versión <major version>.<minor version>.<build number>.<revision>).

un número de versión MAJOR.MINOR.PATCH, incremente el:

versión mayor cuando se realizan cambios de API incompatibles,

versión menor cuando se agrega la funcionalidad de una manera compatible hacia atrás, y

versión del parche al realizar correcciones de errores compatibles con versiones anteriores.

Cuestiones relacionadas