Central Package Management : gestion centralisée des packages NuGet

Déclarez les versions de packages une seule fois pour toute la solution.
Pourquoi CPM ?
  • Uniformité Une seule source de vérité pour les versions assure la cohérence entre projets.
  • Maintenance Mettre à jour une version dans un fichier répercute le changement partout.
  • Audit Visibilité claire pour les revues de sécurité et la conformité.
Configuration initiale

Prérequis : .NET SDK récent (6+)

1. Créez une solution
dotnet new sln -n MySolution

Ajoutez vos projets :

dotnet new classlib -o src/LibA
dotnet new console -o src/App
dotnet sln add src/**/*.csproj
2. Activez CPM

Dans la racine de votre solution, créez un fichier Directory.Packages.props :

<?xml version="1.0" encoding="utf-8"?>
<Project>
  <ItemGroup>
    <!-- Centralized package versions -->
    <PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageVersion Include="Serilog" Version="2.12.0" />
  </ItemGroup>
</Project>
3. Modifiez les projets pour qu'ils utilisent CPM

Dans chaque fichier .csproj :

<Project Sdk="Microsoft.NET.Sdk">
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" />
    <PackageReference Include="Serilog" />
  </ItemGroup>
</Project>

Important : Si un projet avait déjà une version définie, supprimez-la. Le SDK utilisera la valeur du fichier central.

4. Vérifiez
dotnet restore

Vous devriez voir que les packages sont résolus à partir des versions de Directory.Packages.props. Ouvrez un .csproj ; il n'y aura plus de PackageReference avec un attribut Version.

Que fait CPM en arrière-plan ?
  • Le SDK intercepte chaque référence de package.
  • Il lit les versions dans le fichier central (ou fichiers parents).
  • Sans version trouvée, la restauration échoue avec un message clair.
Bonnes pratiques
AstucePourquoi
Versionnez votre Directory.Packages.propsPubliez‑le avec un tag pour garantir une base commune.
Utilisez dotnet list package --outdatedPour visualiser rapidement les dépendances obsolètes.
Bloquez les mises à jour automatiques (RestoreLockedMode="true")Verrouillez la résolution pour éviter des mises à jour involontaires.
Résumé rapide
  • Créez Directory.Packages.props à la racine.
  • Déclarez les packages et versions une seule fois.
  • Retirez les versions dans chaque .csproj.
  • Exécutez dotnet restore.
Écrit le 2025-08-16