ฉันจะล้างแคชแพ็คเกจของ NuGet โดยใช้บรรทัดคำสั่งได้อย่างไร


404

ฉันสามารถล้างแคชแพ็กเกจ NuGet ของคอมพิวเตอร์พัฒนาโดยใช้เครื่องมือเมนู Visual Studio → ตัวเลือกตัวจัดการแพ็คเกจ NuGetทั่วไป : Clear Package Cacheปุ่ม

ฉันต้องการทำสิ่งนี้ในบรรทัดคำสั่ง น่าเสียดายที่ฉันไม่พบสวิตช์บรรทัดคำสั่งที่เกี่ยวข้องสำหรับ nuget.exe

ฉันพลาดอะไรไปหรือเปล่า?


10
ตัวเลือกนี้หายไปในรุ่น VS 2015 ของฉัน
spankmaster79

1
ใช่มันหายไป ดังนั้นฉันจึงใช้คำตอบที่ได้รับการยอมรับ
g.pickardou

คำตอบ:


633

ขั้นแรกให้ดาวน์โหลดเครื่องมือบรรทัดคำสั่ง NuGet จากที่นี่

จากนั้นเปิดพรอมต์คำสั่งและcdไปยังไดเรกทอรีที่nuget.exeดาวน์โหลดมา

คุณสามารถแสดงรายการแคชโลคัลด้วยคำสั่งนี้:

nuget locals all -list

คุณสามารถล้างแคชทั้งหมดด้วยคำสั่งนี้:

nuget locals all -clear

การอ้างอิง: https://docs.nuget.org/consume/command-line-reference


10
ทำงานได้ดีสำหรับ 3.3 แต่สำหรับผู้ใช้ปัจจุบันเท่านั้น - ฉันมีปัญหากับแคชในเครื่องที่เสียหายบนเซิร์ฟเวอร์สร้างของเราซึ่ง (เศร้า) ที่ทำงานภายใต้ Local System ดังนั้นแคชจึงไม่ปรากฏในรายการ - ตำแหน่งจริงคือ `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
Zhaph - Ben Duguid

1
บางทีคุณควรเรียกใช้การดำเนินการที่ชัดเจนภายใต้ผู้ใช้เดียวกันกับการดำเนินการสร้าง ไม่ว่าจะด้วยการกำหนดค่าผู้ใช้งานบิลด์โดยเฉพาะหรือใช้เคล็ดลับในการเรียกใช้งานเคลียร์ข้อมูลภายใต้ Local System
g.pickardou

2
มีความเป็นไปได้ที่จะนำ NuGet ออกจากแคชหรือไม่? สำหรับอดีต: ฉันต้องการลบ NuGet X จากแคชและไม่ทราบตำแหน่งแคช NuGet ในสถานการณ์นี้วิธีการลบ "X" เพียงอย่างเดียวออกจากแคช
user3610920

19
ฉันต้องเรียกใช้nuget update -selfเพื่ออัปเดตnuget.exe ที่ฉันดาวน์โหลดจากลิงก์นี้มิฉะนั้นฉันได้รับข้อผิดพลาดUnknown commmand: 'locals'
ajbeaven

1
ตรวจสอบให้แน่ใจว่าคุณปิด VS ของคุณเนื่องจากdevenv.exeอาจบล็อกโฟลเดอร์บางแพ็คเกจและจะไม่ถูกล้างออก
มูฮัมหมัด

227

ใน Visual Studio 2017, ไปที่เมนูToolsNuGet แพคเกจผู้จัดการ → การตั้งค่าตัวจัดการแพ็กเกจ คุณอาจพบปุ่มClear All NuGet Cache(s):

ป้อนคำอธิบายภาพที่นี่

หากคุณใช้. NET Core คุณสามารถล้างแคชด้วยคำสั่งนี้ซึ่งควรทำงานเป็น. NET Core tools 1.0:

dotnet nuget locals all --clear

7
มันกลับมาแล้ว! :-) ฉันอยากรู้ว่ามันจะถูกลบอีกครั้งใน VS 2019 :-)
g.pickardou

13
การใช้บรรทัดคำสั่งdotnet nuget locals all --clearมีประโยชน์มากขอบคุณ
Boggin

1
คำสั่งdotnet nuget locals all --clearทำงานได้อย่างสมบูรณ์แบบ ฉันไม่ต้องติดตั้งเครื่องมือ nuget cmd พิเศษใด ๆ SSD ของฉันสามารถหายใจได้อีกครั้ง!
Jiří Kuba

87

ยูทิลิตี้ nuget.exe ไม่มีคุณสมบัตินี้ แต่เมื่อเห็นว่าแคช NuGet เป็นเพียงโฟลเดอร์ในคอมพิวเตอร์ของคุณคุณสามารถลบไฟล์ได้ด้วยตนเอง เพียงเพิ่มสิ่งนี้ลงในไฟล์แบทช์ของคุณ:

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

5
ในช่วงเวลาของการถามนี้เป็นทางออกเดียวจึงเป็นคำตอบที่ดีที่สุด ตอนนี้ฉันไม่ได้ทำเครื่องหมายไว้และให้เครดิตคำตอบของ @ rmoore หลังจากลองใช้แล้ว
g.pickardou

27

สำหรับฉันฉันต้องเข้าไปที่นี่:

%userprofile%\.nuget\packages

2
นี่เป็นเส้นทางที่ถูกต้องที่นักเก็ตทั้งหมดจะถูกดาวน์โหลดและเก็บรักษาไว้
Alok Rajasukumaran

2
และฉันมีแพ็คเกจ nuget 2.04 Gb: o
Alok Rajasukumaran

19
2.04GB นั้นใกล้เคียงกับ node_modules สำหรับแอพโหนด "hello world";)
tommed

20

นี้จะเพิ่มคำตอบของ rm8x

ดาวน์โหลดและติดตั้งเครื่องมือบรรทัดคำสั่ง NuGet

รายชื่อคนในพื้นที่ของเราทั้งหมด:

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

ตอนนี้เราสามารถลบด้วยตนเองเหล่านี้หรือเป็นrm8xnuget locals all -clearแนะนำการใช้งาน


จุดลบคืออะไรถ้า nuget จะสร้างสิ่งเหล่านั้นด้วยทุกบิลด์? ทำไมนักเก็ตกำลังสร้างโฟลเดอร์มากมายอย่างแน่นอน?
batmaci

2
@batmaci เพราะเมื่อเวลาผ่านไปแพคเกจที่ได้รับการปรับปรุงและคุณจะจบลงด้วยBatmaci 1.0, Batmaci 1.1, Batmaci 1.2ที่คุณต้องเป็นหนึ่งล่าสุด
Simon_Weaver

เราพบปัญหาในการสร้างเซิร์ฟเวอร์เป็นครั้งคราวโดยไม่พบแพ็คเกจ NuGet ในแคช เราแก้ไขได้โดยการล้างแคชในช่วงเริ่มต้นของการสร้างเสมอ
Steve Wright

14

โปรดทราบว่าdnxมีแคชที่แตกต่างกันสำหรับป้อนผลลัพธ์ 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/

ซึ่งคุณสามารถล้างด้วย

dnu clear-http-cache

ตอนนี้เราแค่ต้องค้นหาว่าคำสั่งจะเป็นอย่างไรในdotnetเครื่องมือ CLI ใหม่

... และนี่คือ:

dotnet restore --no-cache

ฉันจะไปด้วยวิธีการข้างต้นจาก Ruslan เนื่องจากฉันมีปัญหาบางอย่างกับแพคเกจแม้ผ่าน --no-cache
Alexz

การdotnet restore --no-cacheทำงานได้ผลสำหรับฉัน แต่ฉันต้องทำจากพรอมต์ PowerShell ที่ทำงานเป็นผู้ดูแลระบบ
shanabus


5

หากคุณต้องการล้างแคชของ NuGet สำหรับบิลด์เซิร์ฟเวอร์ / เอเจนต์คุณสามารถค้นหาแคชสำหรับแพ็คเกจ NuGet ได้ที่นี่:

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

ตัวอย่าง:

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

1
ฉันใช้เสรีภาพในการทำเครื่องหมายเส้นทางเพื่อให้อ่านได้ง่ายขึ้นและแทนที่ [windows dir] ด้วย%windir%ซึ่งจะทำให้คุณอยู่ในไดเรกทอรีที่ถูกต้องโดยอัตโนมัติเมื่อเข้าสู่เช่น windows explorer
Kjartan

3

คุณสามารถใช้ PowerShell ได้เช่นกัน (เหมือนกับฉัน)

ตัวอย่างเช่น:

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

หรือโหมด 'เงียบ' (ไม่มีข้อความแสดงข้อผิดพลาด):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.