700

I can clear my development computer's NuGet package cache using Visual Studio menu ToolsOptionsNuGet Package ManagerGeneral: Clear Package Cache button.

I would like to do this on the command line. Unfortunately, I can not find a related command line switch for nuget.exe.

Did I miss something?

3
  • 11
    this option is missing in my 2015 VS Version Commented Sep 9, 2015 at 12:39
  • 2
    yes it is missing. So I am using the accepted answer. Commented Sep 9, 2015 at 18:06
  • 2
    Microsoft's doc: learn.microsoft.com/en-us/nuget/consume-packages/… Commented May 25, 2017 at 0:32

13 Answers 13

1057

Using dotnet cli

The easiest way is to use the dotnet cli from a command prompt, this will now be installed along with any of the current dotnet sdks

You can list the local caches with this command:

dotnet nuget locals --list all

You can clear all caches with this command:

dotnet nuget locals --clear all

Using nuget.exe

First, download the NuGet command line tool from here.

Next, open a command prompt and cd to the directory to which nuget.exe was downloaded.

You can list the local caches with this command:

nuget locals all -list

You can clear all caches with this command:

nuget locals all -clear

Reference: https://docs.nuget.org/consume/command-line-reference

Sign up to request clarification or add additional context in comments.

12 Comments

Works nicely for 3.3 but only for the current user - I had an issue with a corrupt local cache on our build server which was (sadly) running under Local System, so the cache wasn't listed - actual location was `C:\Windows\SysWOW64\config\systemprofile\AppData\Local\NuGet\Cache`
Is there any possibilities of removing particular NuGet from cache? for ex: I want to remove NuGet X from cache and am not aware of NuGet cache location, in this situation how to remove "X" alone from cache
I had to run nuget update -self to update the nuget.exe I downloaded from this link otherwise I got the error Unknown commmand: 'locals'
make sure you close your VS since devenv.exe might be blocking some package folders and they won't be cleared.
Be careful with this command. It will cause a lot of downloads and CPU usage in Visual Studio later. Using dotnet nuget locals http-cache --clear seems more reasonable option. It will provide less disk space though.
|
433

In Visual Studio 2022, go to menu ToolsNuGet Package ManagerPackage Manager Settings. You may find out a button, Clear All NuGet Storage:

Button to clear NuGet package cache in Visual Studio 2022

The steps are similar in previous versions of Visual Studio too.

If you are using .NET Core, you may clear the cache with this command, which should work as of .NET Core tools 1.0:

dotnet nuget locals all --clear

2 Comments

dotnet nugget locals all -c does not delete %LOCALAPPDATA%\NuGet\Cache\ folder.
You might probably need to open Visual Studio as an administrator to do this; I usually run VS as a non-admin user, so that was a catch
143

dotnet nuget locals all --clear

If you're using .NET Core.

2 Comments

I would suggest doing this before you go to lunch.
The clear was quick, it's just the next build that takes a little while.
97

The nuget.exe utility doesn't have this feature, but seeing that the NuGet cache is simply a folder on your computer, you can delete the files manually. Just add this to your batch file:

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q

2 Comments

At the time of asking this was the only solution, so was the best answer. Now I've unmarked it, and credited @rmoore's answer after trying it out.
I needed to clear the cache for a different user (the build identity), and this was the only mechanism that cleared the cache. The command line tool would only clear the caches for my own identity.
43

For me I had to go in here:

%userprofile%\.nuget\packages

Comments

24

This adds to rm8x's answer.

Download and install the NuGet command line tool.

List all of our locals:

$ nuget locals all -list
http-cache: C:\Users\MyUser\AppData\Local\NuGet\v3-cache
packages-cache: C:\Users\MyUser\AppData\Local\NuGet\Cache
global-packages: C:\Users\MyUser\.nuget\packages\

We can now delete these manually or as rm8x suggests, use nuget locals all -clear.

3 Comments

what is the point of deleting if nuget will generate all those with every build? why nuget is creating so many folders indeed?
@batmaci because over time packages get updated and you'll end up with Batmaci 1.0, Batmaci 1.1, Batmaci 1.2 where all you need is the latest one
We had the occasional problem on our build server with not finding NuGet packages in the cache. We solved it by always clearing the cache at the start of the build.
22

Note that dnx has a different cache for feeding HTTP results:

Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
   CACHE https://www.nuget.org/api/v2/
   CACHE http://192.168.148.21/api/odata/

Which you can clear with

dnu clear-http-cache

Now we just need to find out what the command will be on the new dotnet CLI tool.

...and here it is:

dotnet restore --no-cache

3 Comments

I would go with the approach above from Ruslan as I has some issues with packages even passing --no-cache
Running dotnet restore --no-cache worked for me, but I had to do it from a Powershell prompt running as administrator
this command helped me work out what was going on when dotnet run was failing to restore packages but not providing any useful output
9

If you need to clear the NuGet cache for your build server/agent you can find the cache for NuGet packages here:

%windir%/ServiceProfiles/[account under build service runs]\AppData\Local\NuGet\Cache

Example:

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache

1 Comment

I took the liberty of marking the path to make it more readable, and replacing [windows dir] with %windir%, which will automatically put you in the right directory when entered into e.g. windows explorer.
6

I ended up here because I was trying to figure out how to delete a specific nuget package from the cache. The answers above talk about deleting all local packages using nuget locals all -clear.

In case anyone is interested in clearing a specific package, I'm sharing my findings:

  • You can't currently clear a specific package using the nuget or dotnet cli. There is a github issue open to fix this: https://github.com/NuGet/Home/issues/5713
  • For now, you have to resort to filesystem commands (as some of the answers above mention) to delete the specific package. For mac/linux, it was rm -rf ~/.nuget/packages/<package-name>
  • What I actually needed was a way to delete the cache of a specific package that I was about to re-publish to a local nuget repository (using a fixed version number to make local development easier). I accomplished this by adding the following to the .csproj file of the nuget-packaged library:
    <Project>
      <Target Name="DeleteLocalCache" BeforeTargets="Pack">
        <RemoveDir Directories="$(NugetPackageRoot)/$(PackageId.ToLower())/1.0.0-local"/>
      </Target>
    </Project>

Comments

5

You can use PowerShell too (same as me).

For example:

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg

Or 'quiet' mode (without error messages):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null

Comments

1

For those who installed nuget on RHEL7 (e.g., from the EPEL repository) using sudo yum install nuget, here is where local cache is located:

~/.local/share/NuGet/Cache

Comments

0

I've saw my nugets in this folder (on build server): c:\Windows\System32\config\systemprofile.nuget\packages\

Comments

0

A slightly more forgiving and verbose version of George M's answer:

<!--Important since we're using a local nuget source, aren't implementing autoincrement version numbers-->
<!--and dotnet nuget doesn't have a command to delete just one cached package-->
<Target Name="DeleteLocalCache" BeforeTargets="Pack">
    <ItemGroup>
        <_ClobberDirectories Include="$([System.IO.Directory]::GetDirectories($(NugetPackageRoot), '$(PackageId.ToLower())', System.IO.SearchOption.TopDirectoryOnly))" />
    </ItemGroup>
    <Message Importance="High" Text="Deleting @(_ClobberDirectories)"/>
    <RemoveDir Directories="@(_ClobberDirectories)"  ContinueOnError="true"/>
</Target>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.