Génération de packages en préversionBuilding pre-release packages

Chaque fois que vous publiez un package mis à jour avec un nouveau numéro de version, NuGet le considère comme la « dernière version stable », comme indiqué par exemple dans l’interface utilisateur du gestionnaire de package dans Visual Studio :Whenever you release an updated package with a new version number, NuGet considers that one as the "latest stable release" as shown, for example in the Package Manager UI within Visual Studio:

Interface utilisateur du gestionnaire de package montrant la dernière version stable

Une version stable est une version considérée comme suffisamment fiable pour être utilisée en production.A stable release is one that's considered reliable enough to be used in production. La dernière version stable est également celle qui est installée sous forme de mise à jour de package ou pendant une restauration de package (conformément aux contraintes décrites dans Réinstallation et mise à jour des packages).The latest stable release is also the one that will be installed as a package update or during package restore (subject to constraints as described in Reinstalling and updating packages).

Pour prendre en charge le cycle de vie de publication du logiciel, NuGet 1.6 et ultérieur permet de distribuer des packages en préversion, où le numéro de version inclut un suffixe de gestion des versions sémantique comme -alpha, -beta ou -rc.To support the software release lifecycle, NuGet 1.6 and later allows for the distribution of pre-release packages, where the version number includes a semantic versioning suffix such as -alpha, -beta, or -rc. Pour plus d’informations, consultez Gestion des versions de package.For more information, see Package versioning.

Vous pouvez spécifier ces versions en utilisant l’une des manières suivantes :You can specify such versions using one of the following ways:

  • Si votre projet utilise PackageReference  : incluez le suffixe de version sémantique dans l’élément PackageVersion du fichier .csproj :If your project uses PackageReference: include the semantic version suffix in the .csproj file's PackageVersion element:

    <PropertyGroup>
        <PackageVersion>1.0.1-alpha</PackageVersion>
    </PropertyGroup>
    
  • Si votre projet utilise un fichier packages.config  : incluez le suffixe de version sémantique dans l’élément version du fichier .nuspec :If your project has a packages.config file: include the semantic version suffix in the .nuspec file's version element:

    <version>1.0.1-alpha</version>
    

Lorsque vous êtes prêt à publier une version stable, supprimez simplement le suffixe et le package est prioritaire sur toutes les préversions.When you're ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. Là encore, consultez Gestion des versions de package.Again, see Package versioning.

Installation et mise à jour des packages en préversionInstalling and updating pre-release packages

Par défaut, NuGet n’inclut pas de préversions dans le cadre de l’utilisation de packages, mais vous pouvez modifier ce comportement comme suit :By default, NuGet does not include pre-release versions when working with packages, but you can change this behavior as follows:

  • Interface utilisateur du Gestionnaire de package dans Visual Studio : dans l’interface utilisateur Gérer les packages NuGet, cochez la case Inclure la préversion :Package Manager UI in Visual Studio: In the Manage NuGet Packages UI, check the Include prerelease box:

    Case à cocher Inclure la préversion dans Visual Studio

    Le fait de cocher ou décocher cette case actualise l’interface utilisateur du gestionnaire de package et la liste des versions disponibles que vous pouvez installer.Setting or clearing this box will refresh the Package Manager UI and the list of available versions you can install.

  • Console du Gestionnaire de package : utilisez le commutateur -IncludePrerelease avec les commandes Find-Package, Get-Package, Install-Package, Sync-Package et Update-Package.Package Manager Console: Use the -IncludePrerelease switch with the Find-Package, Get-Package, Install-Package, Sync-Package, and Update-Package commands. Reportez-vous à Informations de référence sur PowerShell.Refer to the PowerShell Reference.

  • Interface de ligne de commande NuGet : utilisez le commutateur -prerelease avec les commandes install, update, delete et mirror.NuGet CLI: Use the -prerelease switch with the install, update, delete, and mirror commands. Reportez-vous à Informations de référence sur l’interface de ligne de commande NuGet.Refer to the NuGet CLI reference

Gestion sémantique des versionsSemantic versioning

La gestion sémantique de version ou convention SemVer décrit la manière d’utiliser des chaînes dans les numéros de version pour qu’elles indiquent la signification du code sous-jacent.The Semantic Versioning or SemVer convention describes how to utilize strings in version numbers to convey the meaning of the underlying code.

Dans cette convention, chaque version se compose de trois parties, Major.Minor.Patch, avec la signification suivante :In this convention, each version has three parts, Major.Minor.Patch, with the following meaning:

  • Major: Modifications avec ruptureMajor: Breaking changes
  • Minor: Nouvelles fonctionnalités, offrant néanmoins une compatibilité descendanteMinor: New features, but backwards compatible
  • Patch: Correctifs de bogues à compatibilité descendante uniquementPatch: Backwards compatible bug fixes only

Les préversions sont alors signalées par l’ajout d’un trait d’union et d’une chaîne après le numéro du correctif.Pre-release versions are then denoted by appending a hyphen and a string after the patch number. Techniquement parlant, vous pouvez utiliser n’importe quelle chaîne après le trait d’union pour que NuGet traite le package comme une préversion.Technically speaking, you can use any string after the hyphen and NuGet will treat the package as pre-release. NuGet affiche alors le numéro de version complet dans l’interface utilisateur applicable, en laissant les consommateurs interpréter la signification pour eux-mêmes.NuGet then displays the full version number in the applicable UI, leaving consumers to interpret the meaning for themselves.

En sachant cela, il est généralement judicieux de suivre les conventions de nommage reconnues comme les suivantes :With this in mind, it's generally good to follow recognized naming conventions such as the following:

  • -alpha: Version alpha, généralement utilisée pour les travaux en cours et les expérimentations-alpha: Alpha release, typically used for work-in-progress and experimentation
  • -beta: Version bêta, comprenant généralement toutes les fonctionnalités de la prochaine version planifiée, mais pouvant contenir des bogues connus.-beta: Beta release, typically one that is feature complete for the next planned release, but may contain known bugs.
  • -rc: Version Release Candidate, généralement une version potentiellement finale (stable), sauf si des bogues importants apparaissent.-rc: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge.

Notes

NuGet 4.3.0+ prend en charge la gestion sémantique de version 2.0.0, qui prend en charge les numéros de pré-livraison utilisant la notation à points (par exemple, 1.0.1-build.23).NuGet 4.3.0+ supports Semantic Versioning v2.0.0, which supports pre-release numbers with dot notation, as in 1.0.1-build.23. La notation à points n’est pas prise en charge avec les versions de NuGet antérieures à 4.3.0.Dot notation is not supported with NuGet versions before 4.3.0. Dans les versions antérieures de NuGet, vous pouviez utiliser un format similaire à 1.0.1-build23, mais celui-ci est toujours considéré comme une version de pré-livraison.In earlier versions of NuGet, you could use a form like 1.0.1-build23 but this was always considered a pre-release version.

Quels que soient les suffixes que vous utilisez, toutefois, NuGet leur donne la priorité dans l’ordre alphabétique inverse :Whatever suffixes you use, however, NuGet will give them precedence in reverse alphabetical order:

1.0.1
1.0.1-zzz
1.0.1-rc
1.0.1-open
1.0.1-beta12
1.0.1-beta05
1.0.1-beta
1.0.1-alpha2
1.0.1-alpha

Comme indiqué, la version sans aucun suffixe est toujours prioritaire par rapport aux préversions.As shown, the version without any suffix will always take precedence over pre-release versions. Notez également que si vous utilisez des suffixes numériques avec des balises en préversion susceptibles d’utiliser des nombres à deux chiffres (ou plus), utilisez des zéros non significatifs comme dans beta01 et beta05 pour pouvoir les trier correctement quand ces numéros s’allongent.Note also that if you use numerical suffixes with pre-release tags that might use double-digit numbers (or more), use leading zeroes as in beta01 and beta05 to ensure that they sort correctly when the numbers get larger.