2012-08-15 3 views
25

Lors de la création d'un package nuget, la version figurant dans le nom de fichier du package nuget semble provenir du fichier AssemblyInfo du projet d'application Web. J'ai également créé un attribut de version dans le fichier nuspec.Attribut de version NuSpec vs version d'assemblage

Quelle est la relation entre ces deux numéros de version et y a-t-il des conventions attachées?

Répondre

18

En ce qui concerne convention, le logiciel NuGet lui-même, et la sémantique qu'elle applique aux paquets dans la galerie, ne versioning comme décrit par SemVer. Spécifiquement, vous pouvez désigner des versions bêta en suffixant votre numéro de version Nuspec avec "-beta.4" ou quelque chose. Par exemple, voir comment la galerie affiche the latest version of AutoFac, et comparez comment il affiche an old release ( notez le texte "Ceci n'est pas la dernière version d'Autofac disponible."Modifier: La galerie ne semble plus fournir de message spécial pour les non -current versions) et an old PRE-release version (avec le texte "Ceci est une version préliminaire d'Autofac.").

Malheureusement, le AssemblyVersion dans AssemblyInfo.cs ne peut pas contenir de lettres ou de traits d'union, il ne peut donc pas être utilisé de cette manière. Cependant le AssemblyInformationalVersion PEUT avoir des lettres et des traits d'union et, si vous le fournissez, NuGet l'utilisera au lieu du AssemblyVersion pour remplacer le jeton $version$ dans votre fichier nuspec. Qui plus est, le AssemblyInformationalVersion (également appelé la «version du produit» si vous vérifiez les détails d'une DLL dans Windows Explorer), au moins pour moi, représente mieux ce que la version de NuGet devrait correspondre.

J'ai une légère préoccupation cette approche que je devrait quitter le AssemblyVersion même à travers diverses itérations bêta et une itération de la production finale du AssemblyInformationalVersion, ce qui signifie que je suis permettant à plusieurs versions différentes de ma DLL dans le sauvage qui peut se comporter différemment ou incorrectement, mais sont tous identiques en ce qui concerne le CLR (le CLR seulement se soucie environ AssemblyVersion). En pratique, cependant, cela arrive fréquemment (y compris avec les paquets AutoFac décrits ci-dessus) et cela ne semble pas poser de problème.

Voir les deux excellentes réponses les mieux votées à What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion? pour plus d'informations sur AssemblyInformationalVersion et vos amis.

7

Il n'est pas nécessaire d'établir une relation entre la version d'assembly et la version de package de nuget. Par convention, de nombreux mainteneurs utilisent le même nombre pour les deux.

La convention pour utiliser le même numéro est également la nuget.exe par défaut si vous n'avez aucun nuspec, ou vous utilisez nuget.exe spec pour créer un fichier nuspec tokenized. Cependant, si vous remplacez le $ version $ token par une valeur, alors cette valeur prendra la précendence et sera utilisée dans le nom du fichier du package.

Vous pouvez également définir la version sur la ligne de commande, qui a la priorité sur tout ce qui précède.

Plus d'informations sur le blog de Xavier: NuGet $version$ token explained

Questions connexes