Recently I learned about a pretty simple feature that is super useful when working with .NET solutions that have several .csproj
files, and the same NuGet package dependency in two or more of them.
The simple way to do this —what Visual Studio’s “Manage Nuget package” dialog does— is to add/update PackageReference
elements in each csproj
, like this:
But this means that whenever you want to update this dependency, you need to do it separately in each project… and I hope you don’t have too many of them.
The DRY way to do this, is with Import
elements in the csproj
file, that reference other (partial) csproj
files, like this:
Note that I used .csproj.include
for the shared csproj
file; the extension doesn’t actually matter.
Now whenever you need to update that dependency, you can do it in a single place and all the projects that reference that file will keep their versions in sync.
The only caveat I’ve found with this method is that Visual Studio’s “Manage Nuget packages” dialog doesn’t play well with it. If you use it in any particular project to update the package defined in the common file, a new PackageReference
will be added to that project file, and the Import
statement will remain. This won’t cause a build error, but depending on the order of the PackageReference
and Import
elements in your project file, might end up causing one or other version of the package to be used. So make sure that your whole team understands how these shared dependencies packages need to be updated going forward.