ChatGPT解决这个技术问题 Extra ChatGPT

How can I clear the NuGet package cache using the command line?

I can clear my development computer's NuGet package cache using Visual Studio menu Tools → Options → NuGet Package Manager → General: 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?

this option is missing in my 2015 VS Version
yes it is missing. So I am using the accepted answer.

w
wonea

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


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`
Maybe you should run the clear operation under the very same user as the build operation. Either with configuring a dedicated build user, or using a trick to run the clear under Local System.
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.
P
Peter Mortensen

In Visual Studio 2017, go to menu Tools → NuGet Package Manager → Package Manager Settings. You may find out a button, Clear All NuGet Cache(s):

https://i.stack.imgur.com/Lg2Mo.jpg

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

So it's back! :-). I am curious if it will be removed again in VS 2019 :-)
Now in the future, this button was not removed in VS 2019 @g.pickardou.
dotnet nugget locals all -c does not delete %LOCALAPPDATA%\NuGet\Cache\ folder.
P
Peter Mortensen

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

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.
J
Jim Aho

dotnet nuget locals all --clear

If you're using .NET Core.


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.
B
Bowofola

For me I had to go in here:

%userprofile%\.nuget\packages

This is the right path where all the nugets are downloaded and kept
And , I had 2.04 Gb nuget packages :o
2.04GB is about the same as node_modules for a "hello world" node app ;)
P
Peter Mortensen

This adds to rm8x's answer.

Download and install the NuGet command line tool.

From Chocolatey → https://chocolatey.org/packages/NuGet.CommandLine

from NuGet.org → https://www.nuget.org/

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.


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.
P
Peter Mortensen

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

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
P
Peter Mortensen

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

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.
P
Peter Mortensen

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

G
George M

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/

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>

d
dokaspar

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

A
Andrey Ravkov

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