Publier des packages NuGet

Une fois que vous avez créé un package NuGet et que vous disposez d’un fichier .nupkg, vous pouvez rendre le package disponible pour d’autres développeurs publiquement ou en privé. Cet article décrit comment partager des packages publics à l’échelle mondiale via nuget.org.

Vous pouvez également rendre les packages privés et les rendre disponibles uniquement pour une équipe ou une organisation en les hébergeant sur un partage de fichier, un serveur NuGet privé ou un référentiel tiers comme myget, ProGet, Nexus Repository ou Artifactory. Pour plus d’informations, consultez Hébergez vos propres flux NuGet. Pour la publication avec Azure Artifacts, consultez Publier des packages sur NuGet.org.

Publier dans nuget.org

Pour publier sur nuget.org, connectez-vous à nuget.org avec un compte Microsoft et utilisez-le pour créer un compte gratuit nuget.org. Suivez les instructions sur Ajouter un nouveau compte individuel.

Screenshot that shows the NuGet sign in link.

Une fois que vous avez un compte, vous pouvez publier un package sur nuget.org à l’aide du portail web nuget.org, de l’interface CLI dotnet ou de l’interface CLI NuGet version 4.1.0 ou ultérieure. Vous pouvez également publier des packages via Azure Pipelines.

Charger sur le portail web nuget.org

Pour charger un package sur le site web nuget.org :

  1. Sélectionnez Charger dans le menu supérieur de nuget.org, accédez au package sur votre ordinateur, puis sélectionnez Ouvrir.

    Screenshot that shows the Upload dialog on nuget.org

    Si l’ID de package existe déjà sur nuget.org, une erreur s’affiche. Modifiez l’identificateur du package dans votre projet, recompressez votre projet et retentez le chargement.

  2. Si le nom du package est disponible, la section Vérifier s’ouvre de manière à ce que vous puissiez consulter les métadonnées du manifeste du package. Si vous avez inclus un fichier Lisez-moi dans votre package, sélectionnez Aperçu pour vous assurer que tout le contenu s’affiche correctement.

    Pour modifier les métadonnées, modifier le fichier projet ou le fichier .nuspec, régénérez le package, recréez le package et relancez le chargement.

  3. Lorsque toutes les informations sont prêtes, sélectionnez le bouton Envoyer.

Envoyer à l’aide d’une ligne de commande

Pour envoyer des packages vers nuget.org avec une ligne de commande, vous pouvez utiliser soit dotnet.exe ou nuget.exe v4.1.0 ou version ultérieure, qui implémente les protocoles NuGet requis. Pour plus d’informations, consultez Protocoles NuGet.

Pour utiliser ces deux lignes de commande, vous avez besoin d’une clé API obtenue sur nuget.org.

Création d'une clé API

  1. Connectez-vous à votre compte nuget.org ou créez un compte si vous ne l’avez pas déjà fait.

  2. Sélectionnez votre nom d’utilisateur dans le coin supérieur droit, puis Clés API.

  3. Sélectionnez Créer et spécifiez un nom pour votre clé.

  4. Dans Sélectionner des étendues, sélectionnez Push.

  5. Dans Sélectionner des packages> Modèle glob, saisissez *.

  6. Sélectionnez Créer.

  7. Sélectionnez Copier pour copier la nouvelle clé.

    Screenshot that shows the new API key with the Copy link.

Important

  • Votre clé API doit rester secrète. La clé API est semblable à un mot de passe qui permet à toute personne de gérer des packages en votre nom. Supprimez ou régénérez votre clé API si elle est accidentellement divulguée.
  • Enregistrez votre clé dans un emplacement sécurisé car vous ne pourrez plus la copier par la suite. Si vous retournez sur la page de la clé API, vous devez régénérer la clé pour la copier. Vous pouvez également supprimer la clé API si vous ne souhaitez plus distribuer des packages.

La définition d’étendue permet de créer des clés API distinctes selon les finalités. Chacune a son délai d’expiration. Vous pouvez étendre une clé à des packages ou à des modèles glob spécifiques. Vous pouvez également étendre chaque clé à des opérations spécifiques : envoyer de nouveaux packages et versions de package, envoyer uniquement de nouvelles versions de package, ou retirer des package de la liste.

La définition d’étendue permet de créer des clés API pour les différentes personnes qui gèrent des packages dans votre organisation pour qu’elles ne disposent que des autorisations dont elles ont besoin.

Pour plus d’informations, consultez Clés API délimitées.

Utiliser l’interface CLI dotnet

Dans le dossier contenant le fichier .nupkg, exécutez la commande suivante. Spécifiez le nom de votre fichier.nupkg et remplacez la valeur de clé par la clé API.

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

La sortie affiche les résultats du processus de publication :

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

Pour plus d’informations, consultez Envoi NuGet dotnet.

Remarque

Si vous souhaitez éviter que votre package de test soit actif sur nuget.org, vous pouvez l’envoyer au site de test nuget.org à l’adresse https://int.nugettest.org. Notez que les packages chargés dans int.nugettest.org peuvent ne pas être conservés.

Utiliser l’interface CLI NuGet

  1. Dans une invite de commandes, exécutez la commande suivante en remplaçant <your_API_key> par la clé obtenue sur nuget.org :

    nuget setApiKey <your_API_key>
    

    Cette commande stocke votre clé API dans votre configuration NuGet. Vous n’aurez donc pas à saisir votre clé API à nouveau sur cet ordinateur.

    Remarque

    Cette clé API n’est pas utilisée pour s’authentifier sur des flux privés. Pour gérer les informations d’identification pour l’authentification auprès de ces sources, consultez la commande nuget sources.

  2. Envoyez le package en exécutant la commande suivante :

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Publier avec Azure Pipelines

Vous pouvez envoyer des packages vers nuget.org avec Azure Pipelines dans le cadre de votre processus d’intégration continue/de déploiement continu (CI/CD). Pour plus d’informations, consultez Publier des packages NuGet avec Azure Pipelines.

Publier un package privé

Pour envoyer un package signé, vous devez tout d’abord inscrire le certificat utilisé pour signer le package. Si vous ne satisfaites pas les exigences des packages signés nuget.org rejette le package.

Limites de taille des packages

Nuget.org a une limite de taille de package d’environ 250 Mo. Lorsqu’un package dépassant cette limite est chargé, l’erreur suivante s’affiche :

Le fichier de package dépasse la limite de taille. Recommencez.

Si ce package est envoyé à partir de la ligne de commande, la sortie suivante est générée :

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

Si vous obtenez ces erreurs, envisagez de réviser le contenu du package pour en réduire la taille. Si vous empaquetez des symboles de débogage dans votre package, envisagez la possibilité les publier séparément. D’autres ressources peuvent être publiées séparément sous la forme d’un ou plusieurs packages de dépendances pour les répartir en blocs plus petits.

Validation du package et indexation

Les packages envoyés sur nuget.org passent par plusieurs validations, notamment des contrôles antivirus. Les packages déjà sur le site sont régulièrement scannés. Lorsque le package satisfait à tous les contrôles de validation, son indexation et son apparition dans les résultat de la recherche peut prendre un certain temps. Pendant que le package est indexé, il apparaît dans lesPackages non répertoriés et le message suivant s’affiche sur la page du package :

Screenshot of a message indicating that a package isn't yet published.

Une fois que l’indexation et la validation du packages sont terminées, vous recevez un email de confirmation que le package a été correctement publié. Si le package ne satisfait pas à un contrôle de validation, la page du package se met à jour pour afficher l’erreur associée et vous recevez aussi un email vous en informant.

La validation et l’indexation du package prennent généralement moins de 15 minutes. Si la publication de package prend plus de temps que prévu, vérifiez le statut de nuget.org sur le site status.nuget.org. Si tous les systèmes sont opérationnels et que le package n’est pas publié avec succès dans un délai d’une heure, contactez nuget.org à l’aide du lien contacter le support sur la page du package.

Pour afficher le status du package, sélectionnez Gérer les packages en dessous du nom de votre compte en haut à droite sur nuget.org, puis sélectionnez le package dans Packages publiés ou Packages non répertoriés.

Gérer des propriétaires de packages sur NuGet.org

Les propriétaires de packages disposent d’autorisations complètes sur le package, y compris d’ajout et de suppression d’autres propriétaires, ainsi que de publication de mises à jour.

Bien que le fichier .nuspec des packages NuGet définisse les auteurs du package, nuget.org n’utilise pas ces métadonnées pour en définir la propriété. Au lieu de cela, nuget.org attribue la propriété à la personne qui publie le package. Il s’agit soit l’utilisateur connecté qui a chargé le package, soit l’utilisateur dont la clé API a été utilisée avec dotnet push, nuget SetApiKey ou nuget push.

Pour modifier la propriété d’un package :

  1. Connectez-vous à nuget.org avec le compte qui détient actuellement le package.

  2. Sélectionnez le nom de votre compte en haut à droite, puis Gérer les packages et développez Packages publiés.

  3. Sélectionnez le package que vous souhaitez gérer, puis Gérer les packages à droite de la page de package.

  4. Dans la page de gestion des packages, sélectionnez Propriétaires.

  5. Effectuez l'une des opérations suivantes :

    • Sélectionnez Supprimer pour supprimer le propriétaire actuel.

    • Ajoutez un propriétaire sous Ajouter un propriétaire en saisissant son nom d’utilisateur et un message, puis en sélectionnant Ajouter.

      Cette action envoie un email comportant un lien de confirmation au nouveau copropriétaire. Une fois la confirmation effectuée, cette personne dispose d’autorisations complètes pour ajouter et supprimer des propriétaires. Tant que la confirmation n’est pas effectuée, la section Propriétaires actuels affiche : « En attente d’approbation » pour cette personne.

Pour transférer la propriété quand elle change ou qu’un package n’a pas été publié sous le bon compte, ajoutez le nouveau propriétaire. Une fois qu’ils confirment la propriété, ils peuvent supprimer l’ancien propriétaire de la liste.

Pour affecter la propriété à une entreprise ou un groupe, créez un compte nuget.org à l’aide d’un alias d’email transféré aux membres de l’équipe appropriés. Par exemple, les comptes microsoft et aspnet sont propriétaires de divers packages Microsoft ASP.NET.

Parfois, un package peut ne pas avoir de propriétaire actif. Par exemple, le propriétaire d’origine a peut-être quitté la société qui a produit le package. Si vous êtes le propriétaire légitime d’un package et que vous avez besoin d’en récupérer la propriété, utilisez le formulaire de contact sur nuget.org pour expliquer votre situation à l’équipe NuGet. L’équipe suit un processus de vérification de votre propriété, y compris la tentative de localisation du propriétaire existant, et peut vous envoyer une nouvelle invitation pour devenir le propriétaire du package.

Étapes suivantes