2012-08-15 24 views
25

Al crear un paquete nuget, la versión en el nombre de archivo del paquete nuget parece provenir del archivo AssemblyInfo en el proyecto de aplicación web. También he creado un atributo de versión dentro del archivo nuspec.Atributo de versión de NuSpec frente a la versión de ensamblaje

¿Cuál es la relación entre estos dos números de versión y hay alguna convención adjunta?

Respuesta

18

Con respecto a convención, el propio software de NuGet, y la semántica se aplica a los paquetes en la galería, lo hace de versiones como se describe por SemVer. Específicamente, puede designar versiones beta al agregar como sufijo el número de versión de nuspec con "-beta.4" o algo así. Por ejemplo, vea cómo la galería muestra the latest version of AutoFac, y compare cómo muestra an old release ( tenga en cuenta el texto "Esta no es la última versión de Autofac disponible."Editar: La galería ya no parece proporcionar ningún mensaje especial para no -actuales versiones) y an old PRE-release version (con el texto "Esta es una versión preliminar de Autofac.").

Desafortunadamente, el AssemblyVersion en AssemblyInfo.cs no puede contener letras ni guiones, por lo que no se puede usar de esta manera. Sin embargo, el AssemblyInformationalVersion PUEDE tener letras y guiones y, si lo proporciona, NuGet lo usará en lugar del AssemblyVersion para reemplazar el token $version$ en su archivo nuspec. Además, el AssemblyInformationalVersion (también llamado la "Versión del producto" si verifica los detalles de una DLL en el explorador de Windows), al menos para mí, representa mejor lo que la versión de NuGet debe coincidir.

Tengo una ligera preocupación con este enfoque, ya que se espera que deje AssemblyVersion de la misma manera a través de varias iteraciones beta y una iteración de producción final de AssemblyInformationalVersion, lo que significa que estoy permitiendo varias versiones diferentes de mi DLL en el comodín que puede comportarse de manera diferente o incorrecta, sin embargo, son idénticos en lo que respecta al CLR (el CLR solo se preocupa por AssemblyVersion). En la práctica, sin embargo, esto sucede con frecuencia (incluso con los paquetes AutoFac descritos anteriormente) y no parece causar un problema.

Consulte las dos excelentes respuestas más votadas para What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion? para obtener más información sobre AssemblyInformationalVersion y sus amigos.

7

No es necesario que exista una relación entre la versión del ensamblaje y la versión del paquete nuget. Por convención, muchos mantenedores usan el mismo número para ambos.

La convención para usar el mismo número también es nuget.exe por defecto si no tiene nuspec, o usa nuget.exe spec para crear un archivo tokenized nuspec. Sin embargo, si reemplaza la $ version $ token con un valor, ese valor tomará precedencia y se usará en el nombre del archivo del paquete.

También puede establecer la versión en la línea de comandos, que tiene prioridad sobre todo lo anterior.

Más información en el blog de Xavier: NuGet $version$ token explained

Cuestiones relacionadas