La commande dotnet add package est une option pratique pour ajouter ou mettre à jour une référence de package à un fichier projet. Une fois que vous avez exécuté la commande, il existe un contrôle de compatibilité qui vérifie que le package est compatible avec les frameworks du projet. Si la vérification réussit et que le package n’est pas référencé dans le fichier projet, un élément <PackageReference> est ajouté au fichier projet. Si la vérification réussit et que le package est déjà référencé dans le fichier projet, l’élément <PackageReference> est mis à jour vers la dernière version compatible. Une fois le fichier projet mis à jour, la commande dotnet restore est exécutée.
Par exemple, l’ajout de Microsoft.EntityFrameworkCore à ToDo.csproj produit une sortie similaire à l’exemple suivant :
Console
Determining projects to restore...
Writing C:\Users\username\AppData\Local\Temp\tmp24A8.tmp
info : Adding PackageReference for package 'Microsoft.EntityFrameworkCore' into project 'C:\ToDo\ToDo.csproj'.
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/index.json
info : GET https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/0.0.1-alpha/3.1.3.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/3.1.4/7.0.0-preview.2.22153.1.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/7.0.0-preview.3.22175.1/7.0.0-preview.3.22175.1.json
info : NotFound https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json 257ms
info : Restoring packages for C:\ToDo\ToDo.csproj...
info : Package 'Microsoft.EntityFrameworkCore' is compatible with all the specified frameworks in project 'C:\ToDo\ToDo.csproj'.
info : PackageReference for package 'Microsoft.EntityFrameworkCore' version '6.0.4' added to file 'C:\ToDo\ToDo.csproj'.
info : Writing assets file to disk. Path: C:\ToDo\obj\project.assets.json
log : Restored C:\ToDo\ToDo.csproj (in 171 ms).
Le fichier ToDo.csproj contient à présent un élément <PackageReference> pour le package référencé.
Si le projet est intégré à la gestion centralisée des packages (CPM), l’élément <PackageVersion> de l’élément Directory.Packages.props file est ajouté/mis à jour et l’élément <PackageReference> est ajouté au fichier projet.
Les scénarios suivants sont actuellement pris en charge. Ces exemples supposent que la dernière version est Microsoft.EntityFrameworkCore 6.0.4. D’autres scénarios liés à CPM sont documentés dans cette spécification de conception.
Scénario 1 : <PackageReference> n’existe pas dans le fichier projet, <PackageVersion> l’élément n’existe pas dans le Directory.Packages.props filefichier projet et l’argument de version n’est pas passé à partir de la ligne de commande.
Scénario 2 : <PackageReference> n’existe pas dans le fichier projet, <PackageVersion> l’élément n’existe pas dans le Directory.Packages.props filefichier projet et l’argument de version est passé à partir de la ligne de commande.
Scénario 3 : <PackageReference> n’existe pas dans le fichier projet, <PackageVersion> l’élément existe dans le Directory.Packages.props filefichier projet et l’argument de version n’est pas passé à partir de la ligne de commande.
Scénario 4 : <PackageReference> n’existe pas dans le fichier projet, <PackageVersion> l’élément existe dans le Directory.Packages.props filefichier projet et l’argument de version est passé à partir de la ligne de commande.
Vous n’avez pas besoin d’exécuter dotnet restore, car il est exécuté implicitement par toutes les commandes qui nécessitent une restauration pour se produire, comme dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish et dotnet pack. Pour désactiver la restauration implicite, utilisez l’option --no-restore .
La commande dotnet restore est toujours utile dans certains scénarios où la restauration explicite est logique, comme les builds d’intégration continue dans Azure DevOps Services ou dans les systèmes de génération qui doivent contrôler explicitement le moment où la restauration se produit.
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner des problèmes et des demandes de tirage (pull requests). Pour plus d’informations, consultez notre guide du contributeur.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Rejoignez la série de rencontres pour créer des solutions d’IA évolutives basées sur des cas d’utilisation réels avec d’autres développeurs et experts.