Làm cách nào để xóa bộ đệm của gói NuGet bằng dòng lệnh?


405

Tôi có thể xóa bộ đệm gói NuGet của máy tính phát triển của mình bằng menu Visual Studio Công cụTùy chọnTrình quản lý gói NuGet → Nút chung : Clear Package Cache.

Tôi muốn làm điều này trên dòng lệnh. Thật không may, tôi không thể tìm thấy một chuyển đổi dòng lệnh liên quan cho nuget.exe.

Tôi đã bỏ lỡ một cái gì đó?


10
tùy chọn này bị thiếu trong Phiên bản VS 2015 của tôi
spankmaster79

1
vâng nó bị thiếu Vì vậy, tôi đang sử dụng câu trả lời được chấp nhận.
g.pickardou

Câu trả lời:


633

Đầu tiên, tải về công cụ dòng lệnh NuGet từ đây .

Tiếp theo, mở một dấu nhắc lệnh và cdđến thư mục nuget.exeđược tải xuống.

Bạn có thể liệt kê các bộ nhớ cache cục bộ bằng lệnh này:

nuget locals all -list

Bạn có thể xóa tất cả bộ nhớ cache bằng lệnh này:

nuget locals all -clear

Tham khảo: https://docs.nuget.org/consume/command-line-reference


10
Hoạt động tốt trong 3,3 nhưng chỉ dành cho người dùng hiện tại - Tôi gặp sự cố với bộ đệm cục bộ bị hỏng trên máy chủ xây dựng của chúng tôi (đáng buồn) đang chạy trong Hệ thống cục bộ, do đó, bộ đệm không được liệt kê - vị trí thực tế là `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
- Ben Duguid

1
Có lẽ bạn nên chạy hoạt động rõ ràng dưới cùng một người dùng như hoạt động xây dựng. Hoặc với việc định cấu hình người dùng bản dựng chuyên dụng hoặc sử dụng mẹo để chạy phần xóa trong Hệ thống cục bộ.
g.pickardou

2
Có khả năng loại bỏ NuGet cụ thể khỏi bộ đệm không? ví dụ: Tôi muốn xóa NuGet X khỏi bộ đệm và không biết vị trí bộ đệm của NuGet, trong tình huống này làm thế nào để loại bỏ "X" một mình khỏi bộ đệm
user3610920

19
Tôi đã phải chạy nuget update -selfđể cập nhật nuget.exe Tôi đã tải xuống từ liên kết này nếu không tôi đã gặp lỗiUnknown commmand: 'locals'
ajbeaven

1
đảm bảo bạn đóng VS vì devenv.execó thể đang chặn một số thư mục gói và chúng sẽ không bị xóa.
Sharif

227

Trong Visual Studio 2017, đi tới menu Công cụTrình quản lý gói NuGetCài đặt trình quản lý gói . Bạn có thể tìm ra một nút , Clear All NuGet Cache(s):

Nhập mô tả hình ảnh ở đây

Nếu bạn đang sử dụng .NET Core, bạn có thể xóa bộ đệm bằng lệnh này, hoạt động như của công cụ .NET Core 1.0:

dotnet nuget locals all --clear

7
Vậy là nó đã trở lại! :-). Tôi tò mò liệu nó sẽ bị xóa lần nữa trong VS 2019 :-)
g.pickardou

13
sử dụng dòng lệnh dotnet nuget locals all --clearrất hữu ích, cảm ơn
Boggin

1
Bộ chỉ huy dotnet nuget locals all --clearhoạt động hoàn hảo. Tôi đã không phải cài đặt bất kỳ công cụ cmd nuget bổ sung. SSD của tôi có thể thở lại!
Jiří Kuba

87

Tiện ích nuget.exe không có tính năng này, nhưng thấy rằng bộ đệm NuGet chỉ đơn giản là một thư mục trên máy tính của bạn, bạn có thể xóa các tệp theo cách thủ công. Chỉ cần thêm nó vào tệp bó của bạn:

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

5
Tại thời điểm hỏi đây là giải pháp duy nhất, vì vậy là câu trả lời tốt nhất. Bây giờ tôi đã bỏ đánh dấu nó và ghi có câu trả lời của @ rmoore sau khi dùng thử.
g.pickardou

27

Đối với tôi, tôi đã phải đi vào đây:

%userprofile%\.nuget\packages

2
Đây là con đường đúng nơi tất cả các nugets được tải xuống và lưu giữ
Alok Rajasukumaran

2
Và, tôi đã có các gói
nuget

19
2.04GB tương đương với node_modules cho ứng dụng nút "hello world";)
thiệu vào

20

Điều này thêm vào câu trả lời của rm8x .

Tải xuống và cài đặt công cụ dòng lệnh NuGet.

Liệt kê tất cả người dân địa phương của chúng tôi:

$ 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\

Bây giờ chúng ta có thể xóa chúng bằng tay hoặc như rm8x gợi ý, sử dụng nuget locals all -clear.


điểm xóa nếu nuget sẽ tạo ra tất cả những người có mỗi bản dựng là gì? Tại sao nuget lại tạo ra nhiều thư mục như vậy?
batmaci

2
@batmaci vì theo thời gian gói được cập nhật và bạn sẽ kết thúc với Batmaci 1.0, Batmaci 1.1, Batmaci 1.2nơi mà tất cả bạn cần là một mới nhất
Simon_Weaver

Chúng tôi đã gặp sự cố không thường xuyên trên máy chủ xây dựng của mình khi không tìm thấy các gói NuGet trong bộ đệm. Chúng tôi đã giải quyết nó bằng cách luôn xóa bộ nhớ cache khi bắt đầu xây dựng.
Steve Wright

14

Lưu ý rằng dnxcó bộ đệm khác nhau để cung cấp kết quả HTTP:

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/

Mà bạn có thể rõ ràng với

dnu clear-http-cache

Bây giờ chúng ta chỉ cần tìm hiểu lệnh sẽ là gì trên dotnetcông cụ CLI mới .

... và đây là:

dotnet restore --no-cache

Tôi sẽ đi theo cách tiếp cận ở trên từ Ruslan vì tôi có một số vấn đề với các gói thậm chí vượt qua --no-cache
Alexz

Chạy dotnet restore --no-cachelàm việc cho tôi, nhưng tôi phải làm điều đó từ một dấu nhắc Powershell đang chạy với tư cách quản trị viên
shanabus

10

dotnet nuget locals all --clear

Nếu bạn đang sử dụng .NET Core.


Tôi sẽ đề nghị làm điều này trước khi bạn đi ăn trưa.
Helzgate

5

Nếu bạn cần xóa bộ đệm NuGet cho máy chủ / tác nhân xây dựng của mình, bạn có thể tìm bộ đệm cho các gói NuGet tại đây:

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

Thí dụ:

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

1
Tôi đã tự do đánh dấu đường dẫn để làm cho nó dễ đọc hơn và thay thế [windows dir] bằng %windir%, nó sẽ tự động đưa bạn vào đúng thư mục khi được nhập vào, ví dụ như windows explorer.
Kjartan

3

Bạn cũng có thể sử dụng PowerShell (giống như tôi).

Ví dụ:

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

Hoặc chế độ 'im lặng' (không có thông báo lỗi):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.