Centralized Package Management is a NuGet feature that allows you to manage NuGet package dependencies for multiple projects from a single location. This is particularly useful for large solutions with many projects, as it simplifies the process of keeping package versions consistent across the entire solution.
After enabling Central Package Management for an existing solution and committing those changes, one of our build pipelines started to fail. When we took a look at the logs we encountered the following error message:
##[error]The nuget command failed with exit code(1) and error(NU1008: Projects that use central package version management should not define the version on the PackageReference items but on the PackageVersion items: Dapper;Microsoft.Data.SqlClient;Microsoft.Extensions.Configuration;Microsoft.Extensions.Configuration.Binder;Microsoft.Extensions.Configuration.Json;Microsoft.Extensions.Http;Spectre.Console;Spectre.Console.Json.
What is happening?
The reason we got this exception becomes clear when we take a look at our folder structure:
We have one solution sitting at the root (DocumentStorage) folder. But inside the DocumentStorage.Migrator folder we have a second solution with some projects where Central Package Management(CPM) is not enabled yet.
As CPM scans the folders for Directory.Package.props
files, it picks up the file found at the root and also tries to use CPM for the solution where this is not yet enabled.
To disable CPM for this specific solution/project, I created a second Directory.Package.props
file with the following configuration:
By setting the ManagePackageVersionsCentrally
value to false
, CPM is disabled and the error disappears.
More information
.NET Upgrade Assistant now supports upgrading to Centralized Package Management