{"meta":{"title":"Utilisation du registre NuGet","intro":"Vous pouvez configurer l’interface dotnet de ligne de commande (CLI) pour publier des packages GitHub Packages NuGet et utiliser des packages stockés en GitHub Packages tant que dépendances dans un projet .NET.","product":"GitHub Packages","breadcrumbs":[{"href":"/fr/packages","title":"GitHub Packages"},{"href":"/fr/packages/working-with-a-github-packages-registry","title":"Utilisation d’un registre GitHub Packages"},{"href":"/fr/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry","title":"registre NuGet"}],"documentType":"article"},"body":"# Utilisation du registre NuGet\n\nVous pouvez configurer l’interface dotnet de ligne de commande (CLI) pour publier des packages GitHub Packages NuGet et utiliser des packages stockés en GitHub Packages tant que dépendances dans un projet .NET.\n\n<!-- 2148AF7B-5FF8-4B28-A808-D692FEE2225A -->\n\n## Authentification auprès de GitHub Packages\n\n> \\[!NOTE]\n> GitHub Packages prend uniquement en charge l’authentification à l’aide d’un personal access token (classic). Pour plus d’informations, consultez « [Gestion de vos jetons d’accès personnels](/fr/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) ».\n\nVous avez besoin d’un jeton d’accès pour publier, installer et supprimer des packages privés, internes et publics.\n\nVous pouvez utiliser un personal access token (classic) pour vous authentifier auprès de GitHub Packages ou de l’API GitHub. Quand vous créez un personal access token (classic), vous pouvez l’attribuer à différentes étendues selon vos besoins. Pour plus d’informations sur les étendues liées aux packages pour un personal access token (classic), consultez [À propos des autorisations pour les packages GitHub](/fr/packages/learn-github-packages/about-permissions-for-github-packages#about-scopes-and-permissions-for-package-registries).\n\nPour vous authentifier sur un registre GitHub Packages dans un workflow GitHub Actions, vous pouvez utiliser :\n\n* `GITHUB_TOKEN` pour publier des packages associés au dépôt du workflow.\n* Un personal access token (classic) avec au moins `read:packages` la possibilité d'installer des paquets associés à d'autres référentiels privés (`GITHUB_TOKEN` peut être utilisé si le référentiel a un accès en lecture au paquet. Consultez [Configuration du contrôle d’accès et de la visibilité d’un package](/fr/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility).\n\n### Authentification dans un GitHub Actions flux de travail\n\nCe registre prend en charge les autorisations granulaires.\nPour les registres qui prennent en charge les autorisations granulaires, si votre GitHub Actions flux de travail utilise un personal access token pour s’authentifier auprès d’un registre, nous vous recommandons vivement de mettre à jour votre flux de travail pour utiliser le `GITHUB_TOKEN`. Pour obtenir des conseils sur la mise à jour de vos flux de travail qui s’authentifient auprès d’un personal access tokenregistre, consultez [Publication et installation d’un package avec GitHub Actions](/fr/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#upgrading-a-workflow-that-accesses-a-registry-using-a-personal-access-token).\n\n> \\[!NOTE]\n> La capacité des workflows GitHub Actions de supprimer et de restaurer des packages à l’aide de l’API REST est actuellement en préversion publique publique et susceptible d’être modifiée.\n\nVous pouvez utiliser un `GITHUB_TOKEN` dans un workflow GitHub Actions pour supprimer ou restaurer un package à l’aide de l’API REST, si le jeton dispose de l’autorisation `admin` sur le package. Les référentiels qui publient des packages à l’aide d’un workflow et les référentiels que vous avez explicitement connectés à des packages se voient automatiquement accorder l’autorisation `admin` aux packages dans le référentiel.\n\nPour plus d’informations sur `GITHUB_TOKEN`, consultez [Utiliser GITHUB\\_TOKEN pour l’authentification dans les flux de travail](/fr/actions/tutorials/authenticate-with-github_token#using-the-github_token-in-a-workflow). Pour plus d’informations sur les bonnes pratiques lors de l’utilisation d’un registre dans des actions, consultez [Exécuteurs compromis](/fr/actions/concepts/security/compromised-runners#cross-repository-access).\n\nUtilisez la commande suivante pour vous authentifier auprès de GitHub Packages dans un flux de travail GitHub Actions à l’aide de `GITHUB_TOKEN` au lieu d’encoder en dur un personal access token dans un fichier nuget.config du référentiel :\n\n```shell\ndotnet nuget add source --username USERNAME --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github \"https://nuget.pkg.github.com/NAMESPACE/index.json\"\n```\n\nRemplacez `NAMESPACE` par le nom du compte personnel ou de l’organisation auquel vos packages sont limités.\n\nRemplacez `USERNAME` par le nom d’utilisateur à utiliser lors de la connexion à une source authentifiée.\n\nVous pouvez également choisir d’accorder des autorisations d’accès aux packages indépendamment pourGitHub Codespaces etGitHub Actions. Pour plus d’informations, consultez « [Configuration du contrôle d’accès et de la visibilité d’un package](/fr/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-github-codespaces-access-to-your-package) » et « [Configuration du contrôle d’accès et de la visibilité d’un package](/fr/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-workflow-access-to-your-package) ».\n\n### Authentification avec un personal access token\n\n> \\[!NOTE]\n> GitHub Packages prend uniquement en charge l’authentification à l’aide d’un personal access token (classic). Pour plus d’informations, consultez « [Gestion de vos jetons d’accès personnels](/fr/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) ».\n\nVous avez besoin d’un jeton d’accès pour publier, installer et supprimer des packages privés, internes et publics.\n\nVous pouvez utiliser un personal access token (classic) pour vous authentifier auprès de GitHub Packages ou de l’API GitHub. Quand vous créez un personal access token (classic), vous pouvez l’attribuer à différentes étendues selon vos besoins. Pour plus d’informations sur les étendues liées aux packages pour un personal access token (classic), consultez [À propos des autorisations pour les packages GitHub](/fr/packages/learn-github-packages/about-permissions-for-github-packages#about-scopes-and-permissions-for-package-registries).\n\nPour vous authentifier sur un registre GitHub Packages dans un workflow GitHub Actions, vous pouvez utiliser :\n\n* `GITHUB_TOKEN` pour publier des packages associés au dépôt du workflow.\n* Un personal access token (classic) avec au moins `read:packages` la possibilité d'installer des paquets associés à d'autres référentiels privés (`GITHUB_TOKEN` peut être utilisé si le référentiel a un accès en lecture au paquet. Consultez [Configuration du contrôle d’accès et de la visibilité d’un package](/fr/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility).\n\nVous devez utiliser un personal access token (classic) avec les étendues appropriées pour publier et installer des packages dans GitHub Packages. Pour plus d’informations, consultez « [Introduction aux packages GitHub](/fr/packages/learn-github-packages/introduction-to-github-packages#authenticating-to-github-packages) ».\n\nPour vous authentifier auprès de GitHub Packages à l’aide de l’interface de ligne de commande (CLI) `dotnet`, créez un fichier *nuget.config* dans le répertoire de votre projet en indiquant GitHub Packages comme source sous `packageSources` pour le client CLI `dotnet`.\n\nVous devez remplacer :\n\n* `USERNAME` avec le nom de votre compte personnel sur GitHub.\n* `TOKEN` avec votre personal access token (classic).\n* `NAMESPACE` avec le nom du compte personnel ou de l’organisation dans laquelle vos packages sont limités.\n\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <packageSources>\n        <clear />\n        <add key=\"github\" value=\"https://nuget.pkg.github.com/NAMESPACE/index.json\" />\n    </packageSources>\n    <packageSourceCredentials>\n        <github>\n            <add key=\"Username\" value=\"USERNAME\" />\n            <add key=\"ClearTextPassword\" value=\"TOKEN\" />\n        </github>\n    </packageSourceCredentials>\n</configuration>\n```\n\n## Publication d'un package\n\n> \\[!NOTE]\n> L’archive `nupkg` pour une version de package NuGet doit être inférieure à 2,147 Go de taille.\n\nVous pouvez publier un paquet sur GitHub Packages en vous authentifiant à l’aide d’un fichier *nuget.config*, en utilisant l’option de ligne de commande `--api-key` avec votre GitHubpersonal access token (classic), ou en utilisant une commande pouvant être exécutée directement depuis la ligne de commande à l’aide de l’interface de ligne de commande `dotnet` (CLI).\n\nRemplacez `OWNER` par votre nom d’utilisateur ou votre nom d’entreprise, et `YOUR_GITHUB_PAT` par votre personal access token.\n\n```shell\ndotnet nuget add source --username OWNER --password YOUR_GITHUB_PAT --store-password-in-clear-text --name github \"https://nuget.pkg.github.com/OWNER/index.json\"\n```\n\nLe registre NuGet stocke les packages dans votre compte d’organisation ou personnel et vous autorise à associer les packages à un dépôt. Vous pouvez choisir d’hériter des autorisations d’un dépôt ou de définir des autorisations granulaires indépendamment d’un dépôt.\n\nLorsque vous publiez un package pour la première fois, la visibilité par défaut est privée. Pour modifier la visibilité ou définir les autorisations d’accès, consultez [Configuration du contrôle d’accès et de la visibilité d’un package](/fr/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility). Pour plus d’informations sur la liaison d’un package publié avec un référentiel, consultez [Connexion d’un dépôt à un package](/fr/packages/learn-github-packages/connecting-a-repository-to-a-package).\n\nSi vous spécifiez un `RepositoryURL` dans le fichier *.csproj* de votre project, le package publié est automatiquement connecté au référentiel spécifié. Pour plus d’informations, consultez [Utilisation du registre NuGet](/fr/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry#publishing-a-package-using-a-nugetconfig-file). Pour plus d’informations sur la liaison d’un package déjà publié à un référentiel, consultez [Connexion d’un dépôt à un package](/fr/packages/learn-github-packages/connecting-a-repository-to-a-package).\n\n### Publication d’un package à l’aide d’un GitHub personal access token en tant que clé API\n\nSi vous ne disposez pas encore d'un personal access token à utiliser pour votre compte sur GitHub, veuillez consulter la section [Gestion de vos jetons d’accès personnels](/fr/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).\n\n1. Créez un nouveau projet. Remplacez `PROJECT_NAME` par le nom que vous souhaitez donner à la project.\n\n   ```shell\n   dotnet new console --name PROJECT_NAME\n   ```\n\n2. Empaquetez le projet.\n\n   ```shell\n   dotnet pack --configuration Release\n   ```\n\n3. Publiez le package à l’aide de votre personal access token clé API. Remplacez `PROJECT_NAME` par le nom du projet, `1.0.0` par le numéro de version du package et `YOUR_GITHUB_PAT` par votre personal access token.\n\n   ```shell\n   dotnet nuget push \"bin/Release/PROJECT_NAME.1.0.0.nupkg\" --api-key YOUR_GITHUB_PAT --source \"github\"\n   ```\n\nAprès avoir publié un package, vous pouvez l'afficher sur GitHub. Pour plus d’informations, consultez « [Affichage de packages](/fr/packages/learn-github-packages/viewing-packages) ».\n\n### Publication d’un package à l’aide d’un fichier *nuget.config*\n\nLors de la publication, si vous liez votre package à un référentiel, le `OWNER` référentiel spécifié dans votre fichier *.csproj* doit correspondre à celui `NAMESPACE` que vous utilisez dans votre fichier d’authentification *nuget.config* . Spécifiez ou incrémentez le numéro de version dans votre fichier *.csproj*, puis utilisez la commande `dotnet pack` pour créer un fichier *.nuspec* pour cette version. Pour plus d’informations sur la création de votre package, consultez [Créer et publier un package](https://docs.microsoft.com/nuget/quickstart/create-and-publish-a-package-using-the-dotnet-cli) dans la documentation Microsoft.\n\n> \\[!NOTE]\n> Si vous publiez un package lié à un dépôt, le package hérite automatiquement des autorisations d’accès du dépôt lié, tandis que les workflows GitHub Actions du dépôt lié accèdent automatiquement au package, sauf si votre organisation a désactivé l’héritage automatique des autorisations d’accès. Pour plus d’informations, consultez « [Configuration du contrôle d’accès et de la visibilité d’un package](/fr/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#about-inheritance-of-access-permissions) ».\n\n1. Authentifiez-vous sur GitHub Packages. Pour plus d’informations, consultez [Authentification auprès de GitHub Packages](#authenticating-to-github-packages).\n\n2. Créez un nouveau projet. Remplacez `PROJECT_NAME` par le nom que vous souhaitez donner à la project.\n\n   ```shell\n   dotnet new console --name PROJECT_NAME\n   ```\n\n3. Ajoutez les informations spécifiques de votre projet au fichier de votre projet, qui se termine par *.csproj*. Veillez à remplacer :\n\n   * `1.0.0` avec le numéro de version du paquet.\n   * `OWNER` avec le nom du compte personnel ou de l’organisation qui possède le référentiel auquel vous souhaitez lier votre package.\n   * `REPOSITORY` avec le nom du référentiel auquel vous souhaitez connecter votre package.\n\n   ```xml\n   <Project Sdk=\"Microsoft.NET.Sdk\">\n\n     <PropertyGroup>\n       <OutputType>Exe</OutputType>\n       <TargetFramework>netcoreapp3.0</TargetFramework>\n       <PackageId>PROJECT_NAME</PackageId>\n       <Version>1.0.0</Version>\n       <Authors>AUTHORS</Authors>\n       <Company>COMPANY_NAME</Company>\n       <PackageDescription>PACKAGE_DESCRIPTION</PackageDescription>\n       <RepositoryUrl>https://github.com/OWNER/REPOSITORY</RepositoryUrl>\n     </PropertyGroup>\n\n   </Project>\n   ```\n\n4. Empaquetez le projet.\n\n   ```shell\n   dotnet pack --configuration Release\n   ```\n\n5. Publiez le package avec la `key` que vous avez spécifiée dans le fichier *nuget.config*. Remplacez `PROJECT_NAME` par le nom du project, puis remplacez `1.0.0` par le numéro de version du package.\n\n   ```shell\n   dotnet nuget push \"bin/Release/PROJECT_NAME.1.0.0.nupkg\" --source \"github\"\n   ```\n\nAprès avoir publié un package, vous pouvez l'afficher sur GitHub. Pour plus d’informations, consultez « [Affichage de packages](/fr/packages/learn-github-packages/viewing-packages) ».\n\n## Publication de plusieurs packages sur le même dépôt\n\nPour connecter plusieurs packages au même dépôt, utilisez la même GitHub URL de dépôt dans les `RepositoryURL` champs de tous les fichiers projet *.csproj* .\nGitHub correspond au référentiel en fonction de ce champ.\n\nL’exemple suivant publie les projets MY\\_APP et MY\\_OTHER\\_APP dans le même dépôt :\n\n```xml\n<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>netcoreapp3.0</TargetFramework>\n    <PackageId>MY_APP</PackageId>\n    <Version>1.0.0</Version>\n    <Authors>Octocat</Authors>\n    <Company>GitHub</Company>\n    <PackageDescription>This package adds a singing Octocat!</PackageDescription>\n    <RepositoryUrl>https://github.com/my-org/my-repo</RepositoryUrl>\n  </PropertyGroup>\n\n</Project>\n```\n\n```xml\n<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>netcoreapp3.0</TargetFramework>\n    <PackageId>MY_OTHER_APP</PackageId>\n    <Version>1.0.0</Version>\n    <Authors>Octocat</Authors>\n    <Company>GitHub</Company>\n    <PackageDescription>This package adds a dancing Octocat!</PackageDescription>\n    <RepositoryUrl>https://github.com/my-org/my-repo</RepositoryUrl>\n  </PropertyGroup>\n\n</Project>\n```\n\n## Installation d’un package\n\nL’utilisation de packages provenant de GitHub dans votre projet est similaire à l’utilisation de packages de *nuget.org*. Ajoutez les dépendances de votre package à votre fichier *.csproj*, en spécifiant le nom et la version du package. Pour plus d’informations sur l’utilisation d’un fichier *.csproj* dans votre projet, consultez [Travailler avec des packages NuGet](https://docs.microsoft.com/nuget/consume-packages/overview-and-workflow) dans la documentation Microsoft.\n\n1. Authentifiez-vous sur GitHub Packages. Pour plus d’informations, consultez [Authentification auprès de GitHub Packages](#authenticating-to-github-packages).\n\n2. Pour utiliser un package, ajoutez `ItemGroup` et configurez le champ `PackageReference` dans le fichier *.csproj* project. Remplacez la valeur `PACKAGE_NAME` dans `Include=\"PACKAGE_NAME\"` par votre dépendance de package et remplacez la valeur `X.X.X` dans `Version=\"X.X.X\"` par la version du package que vous voulez utiliser :\n\n   ```xml\n   <Project Sdk=\"Microsoft.NET.Sdk\">\n\n     <PropertyGroup>\n       <OutputType>Exe</OutputType>\n       <TargetFramework>netcoreapp3.0</TargetFramework>\n       <PackageId>My-app</PackageId>\n       <Version>1.0.0</Version>\n      <Authors>Octocat</Authors>\n       <Company>GitHub</Company>\n      <PackageDescription>This package adds an Octocat!</PackageDescription>\n       <RepositoryUrl>https://github.com/OWNER/REPOSITORY</RepositoryUrl>\n     </PropertyGroup>\n\n     <ItemGroup>\n       <PackageReference Include=\"PACKAGE_NAME\" Version=\"X.X.X\" />\n     </ItemGroup>\n\n   </Project>\n   ```\n\n3. Installez les packages avec la commande `restore`.\n\n   ```shell\n   dotnet restore\n   ```\n\n## Dépannage\n\nSi vous utilisez un `GITHUB_TOKEN` pour vous authentifier auprès d’un GitHub Packages registre au sein d’un GitHub Actions workflow, le jeton ne peut pas accéder aux packages privés basés sur un référentiel privé dans un autre référentiel que celui dans lequel le flux de travail s’exécute. Pour accéder aux packages associés à d’autres référentiels, générez plutôt un personal access token (classic) avec la portée `read:packages`, puis passez ce jeton comme secret.\n\n### Erreurs 403 intermittentes lors de la restauration de packages publics\n\nSi vous utilisez GitHub Packages avec *nuget.org* et que vous rencontrez des erreurs intermittentes 403 Interdit lors de la restauration de packages publics standard (par exemple `Microsoft.Extensions.*`), cela peut se produire, car NuGet interroge toutes les sources de package configurées pour chaque package. Si GitHub Packages l’authentification échoue temporairement, elle peut bloquer l’intégralité de la restauration, même pour les packages qui n’existent pas sur GitHub Packages.\n\nPour éviter cela, utilisez le [mappage de source de package NuGet](https://learn.microsoft.com/nuget/consume-packages/package-source-mapping) pour router les packages vers des sources spécifiques.\n\nRemplacez :\n\n* `NAMESPACE` avec le nom du compte personnel ou de l’organisation propriétaire de votre GitHub Packages flux NuGet.\n* `PACKAGE-ID-PREFIX` avec le préfixe d’ID de package NuGet que vous utilisez pour les packages hébergés sur GitHub Packages. Si vous utilisez plusieurs préfixes, ajoutez des entrées supplémentaires `<package>` pour chaque préfixe.\n\n```xml\n<configuration>\n    <packageSources>\n        <add key=\"nuget.org\" value=\"https://api.nuget.org/v3/index.json\" />\n        <add key=\"github\" value=\"https://nuget.pkg.github.com/NAMESPACE/index.json\" />\n    </packageSources>\n    <packageSourceMapping>\n        <packageSource key=\"nuget.org\">\n            <package pattern=\"*\" />\n        </packageSource>\n        <packageSource key=\"github\">\n            <package pattern=\"PACKAGE-ID-PREFIX.*\" />\n        </packageSource>\n    </packageSourceMapping>\n</configuration>\n```\n\nNuGet utilise le [modèle de correspondance le plus spécifique](https://learn.microsoft.com/nuget/consume-packages/package-source-mapping#package-pattern-precedence), de sorte que les packages correspondants `PACKAGE-ID-PREFIX.*` ne sont extraits qu’à partir de GitHub Packages, tandis que tous les autres packages sont extraits de *nuget.org*. Cela permet également d’éviter les attaques de confusion des dépendances en garantissant que vos packages privés ne peuvent provenir que de votre GitHub Packages flux.\n\n## Pour approfondir\n\n* [Suppression et restauration d'un package](/fr/packages/learn-github-packages/deleting-and-restoring-a-package)"}