Change NuGet package folders used by Visual Studio 2017

Cache locations

Solution-local packages folders are no longer exist for .NET Core and Visual Studio 2017.

NuGet is now fully integrated into MSBuild:

Solution-local packages folders are no longer used – Packages are now
resolved against the user’s cache at %userdata%.nuget, rather than a
solution specific packages folder. This makes PackageReference perform
faster and consume less disk space by using a shared folder of
packages on your workstation.

NuGet 4.0+ uses at least two global package locations:

  • User-specific: %userprofile%\.nuget\packages\
  • Machine-wide: %ProgramFiles(x86)%\Microsoft SDKs\NuGetPackages\"

You can list all user-specific folders using the following console command:

nuget locals all -list

Notice that the machine-wide folder isn’t listed there. However, it is defined at Visual Studio settings:

Options -> NuGet Package Manager -> Package Sources

Configuration files

NuGet.config files are located here:

  • User-specific: %APPDATA%\NuGet\
  • Machine-wide: %ProgramFiles(x86)%\NuGet\Config\

It is possible to change and override NuGet settings at many levels:

  • project
  • solution
  • user
  • machine

And even more! Read more about NuGet.config hierarchical priority ordering here: How settings are applied.

For example, globalPackagesFolder parameter changes a package cache location. Look at this NuGet.config example:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <clear />
    <add key="globalPackagesFolder" value="c:\packages" />
  </config>
</configuration>

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)