Skip to main content

Microsoft

Moving from NuGet Package.Config to PackageReference

Recently during a .Net upgrade project, we migrated NuGet packages to PackageReference. Though we have been using NuGet packages for a long time, it has been interesting to see how NuGet has changed the way of including packages without package.config. The new method keeps solutions tidier and has numerous other advantages, so it’s definitely worth checking out.

How is it different?

Here are some differences between PackageReference and traditional package inclusion:

No more packages.config in your solution

Package references are directly added in your application just like other files, so no more packages.config.

No more long lists of dependencies (my personal favorite)

Earlier, a package inclusion would include all dependent references as well, making it very difficult to spot the ones you included. Now with PackageReference, you only see the one you actually added.

Refers packages from a global repository

Packages are referred from a global repository folder instead of a local solution folder. This saves space and improves performance.

Helps distinguish between packages and other references

Visual separation is a great way to see packages.

Cost

Only compatible with Visual Studio 2017 and later

With Visual Studio 2019 already being available, I don’t feel this is a cost. Rather, it encourages you to adopt newer technologies.

Migration

For new package references in Visual Studio, you need to set Default Package Management Format to PackageReference by going to:

  • Tools > NuGet Package Manager > Package Manager Settings

Or

  • Tools > Options; Under General tab in Package Manager Settings

For existing references, you can migrate easily by right clicking on the config file, and selecting “Migrate packages.config to PackageReference…”

Conclusion

With all of the benefits and easy migration steps, it is worth switching to PackageReference.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Vikrant Punwatkar

I am a Sitecore 9,10 certified developer with 12 years of experience.

More from this Author

Follow Us