ไม่พบไฟล์ไฟล์ project.assets.json เรียกใช้แพคเกจ NuGet คืนค่า


262

ฉันพยายามใช้ nopCommerce (ซึ่งเขียนใน. NET Core) แต่เมื่อฉันต้องการเรียกใช้โครงการฉันพบข้อผิดพลาด 52 ข้อที่บอกฉันให้เรียกใช้แพคเกจ nuget

ไฟล์สินทรัพย์ ~ \ obj \ project assets.json 'ไม่พบ เรียกใช้แพคเกจ NuGet คืนค่าเพื่อสร้างไฟล์นี้ Nop.Web.MVC.Testsote

เมื่อฉันใช้คลิกขวาบนโซลูชันและเลือกแพคเกจคืน Nuget ฉันได้รับข้อความนี้:

แพคเกจทั้งหมดได้รับการติดตั้งแล้วและไม่มีอะไรที่จะกู้คืน

แต่ข้อผิดพลาด 52 ข้อนั้นยังคงมีอยู่และในเครื่องมือ -> ตัวจัดการแพ็คเกจ NuGet -> จัดการแพคเกจ NuGet สำหรับการแก้ปัญหา ไม่มีสิ่งใดติดตั้งบนโซลูชันฉันยังอัปเดต VS2017 เป็น 15.5.4 ด้วย


คุณให้ความยินยอมกับ NuGet ในการกู้คืนหรือไม่? ไปที่เครื่องมือตัวเลือกการค้นหา NuGet และทำเครื่องหมายที่ตัวเลือก "อนุญาต NuGet ... "
imps

หากใครอยู่บน Mac เราพบปัญหานี้และแก้ไขโดยการลบช่องว่างในเส้นทางที่เก็บข้อมูล (ซึ่งถูกสร้างขึ้นในระหว่างการดึง git): My% 20Project กลายเป็น MyProject
เดวิดเฮก

คำตอบ:


459

ในการแก้ไขข้อผิดพลาดนี้จากเครื่องมือ> ตัวจัดการแพ็คเกจ NuGet> คอนโซลตัวจัดการแพคเกจเพียงเรียกใช้:

dotnet restore

ข้อผิดพลาดเกิดขึ้นเนื่องจาก dotnet cli ไม่ได้สร้างไฟล์ที่จำเป็นทั้งหมดในตอนแรก การดำเนินการ dotnet restore จะเพิ่มไฟล์ที่จำเป็น


21
นี่คือการแก้ไขสำหรับการสร้างเซิร์ฟเวอร์ เพิ่มขั้นตอนบรรทัดคำสั่งเพื่อเรียกใช้ "dotnet restore" หลังจากการกู้คืน NuGet ปกติ
ทำเครื่องหมาย

24
คุณสามารถทำได้จาก MSBuild เช่นกัน: msbuild MySolution.sln / t: Restore
Der_Meister

3
@ วิธีแก้ปัญหาของ Der_Meister ในการเพิ่ม / t: ตัวเลือกการกู้คืนทำงานได้สำหรับฉันอย่างไรก็ตามฉันต้องสร้างโซลูชันสองครั้ง (แยกขั้นตอนการสร้างสองขั้น) ก่อนอื่นด้วยการ / t: กู้คืนตัวเลือกแล้วไม่มีอีกครั้ง
Michael

16
@Michael ลอง msbuild MySolution.sln / t: Restore; Build
Der_Meister

8
หากคุณมีไฟล์โซลูชันมากกว่าหนึ่งไฟล์คุณต้องทำdotnet restore solutionfilename.sln
ECH

97

ในกรณีของฉันข้อผิดพลาดคือที่เก็บ GIT มันมีช่องว่างในชื่อทำให้โครงการของฉันไม่สามารถกู้คืนได้

หากนี่คือปัญหาของคุณเพียงแค่เปลี่ยนชื่อที่เก็บ GIT เมื่อคุณโคลน

git clone http://Your%20Project%20With%20Spaces newprojectname

6
ฉันคิดกับตัวเองว่านี่อาจเป็นไปไม่ได้ หลังจากลองอีกหนึ่งชั่วโมงเพื่อหาทางแก้ปัญหาที่เสนออื่น ๆ ในที่สุดฉันก็ลองสิ่งนี้หมดหวังและแก้ไขปัญหาของฉันได้ Dammit man!
สิ้นเชิง

2
สิ่งนี้แก้ไขปัญหาที่ฉันมีอยู่ขอบคุณมาก!
Sharbel

3
คำตอบนี้ควรอยู่ที่จุดเริ่มต้นของการโพสต์ไม่ใช่ตอนท้าย แก้ไขปัญหาของฉัน
CodeWarrior

2
คุณบันทึกวันของฉัน! ขอบคุณ.
mpatel

3
ในกรณีของฉันฉันเพียงแค่เปลี่ยนชื่อโฟลเดอร์ที่มีอยู่จริงของฉันโดยลบ 20% และแทนที่ด้วยพื้นที่ปกติและสิ่งที่ทุกคนจะทำงานได้ดี
hosam hemaily

42

ในกรณีที่ 'dotnet restore' ไม่ทำงานขั้นตอนต่อไปนี้อาจช่วยได้:

  1. Visual Studio >> เครื่องมือ >> ตัวเลือก >> Nuget Manager >> แพ็คเกจแหล่งข้อมูล
  2. ไม่ได้ตรวจสอบแหล่งที่มาของแพ็คเกจของบุคคลที่สาม
  3. สร้างโซลูชันใหม่

3
ฉันเพิ่งพบปัญหานี้สำหรับเซิร์ฟเวอร์ Identity Quickstart # 1: การรักษาความปลอดภัย API โดยใช้ข้อมูลประจำตัวลูกค้าและวิธีแก้ไขปัญหาข้างต้นได้ผลสำหรับฉัน
Tharindu Jayasinghe

ขอบคุณ! ฉันลบแหล่งข้อมูลหนึ่งที่ไม่เกี่ยวข้องอีกต่อไป (จากโซลูชันอื่น) และในแหล่งข้อมูลแพคเกจแบบออฟไลน์แพคเกจnuget.orgและMSVS ที่ฉันคลิกปุ่มอัปเดต หลังจากนี้dotnet restoreทำงานได้
CPHPython

ขอบคุณนั่นมัน!
tdracz

33

การปิดและเปิด Visual Studio ใหม่แก้ไขปัญหานี้ให้ฉันเมื่อฉันตรวจสอบให้แน่ใจว่าแพคเกจ NuGet ได้รับการกู้คืนตามคำตอบอื่น ๆ ที่โพสต์ไว้ที่นี่

แก้ไข:ในบางครั้งฉันต้องรีสตาร์ท Visual Studio ทันทีหลังจากรีสตาร์ทอีกครั้งดังนั้นอย่าคิดว่าการรีสตาร์ทจะไม่ช่วยเพียงเพราะคุณเพิ่งเริ่มต้นใหม่


ไม่อยากเชื่อเลยว่าสิ่งนี้จะได้ผลกับฉันเช่นกันหลังจากทำการกู้คืน dotnet และหลังจากนี้
Gaspa79

ฉันมีปัญหาการเชื่อมต่อที่แยกจากกันบน LAN งานของฉันซึ่งถูกยับยั้งสำหรับ NuGet การรีบูตเครื่องพีซีของฉันแก้ปัญหาได้!
นีโอ

นี่ไม่ใช่คำตอบเพราะบางครั้งคุณใช้เครื่องมือ CLI getและbuildและคุณไม่ได้เปิด VS ฉันรู้ว่าทำไมมันทำงานกับ VS - เพราะ VS แก้ไขการอ้างอิงโครงการโดยอัตโนมัติ
TS

@TS คำถามถูกแท็กด้วย "Visual Studio 2017" ดังนั้นฉันจะบอกว่านี่เป็นคำตอบ คุณยกประเด็นที่น่าสนใจว่าปัญหาอยู่กับ VS การแก้ปัญหาการพึ่งพา หากคุณมีข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ผิดพลาดฉันแน่ใจว่ามันจะทำให้การอ่านที่น่าสนใจ
ดีเด่นเรียกเก็บเงิน

+1 คุณจับฉัน! ด้วย VS ก็ดี เวอร์ชัน 15.5 ของเขาคือบั๊กกี้ ฉันคิดว่า 15.5 / 15.6 มีโฮสต์ของปัญหาสำหรับการแก้ปัญหาการอ้างอิง ตอนนี้นี่คือคำตอบstackoverflow.com/a/58548856/1704458
TS

20

สำหรับผู้ที่มีปัญหาเดียวกันกับฉันในสภาพแวดล้อม Azure DevOps / VSTS พบข้อความที่คล้ายกัน: C:\Program Files\dotnet\sdk\2.2.104\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(208,5): Error NETSDK1004: Assets file '...\obj\project.assets.json' not found. Run a NuGet package restore to generate this file

เพิ่ม/t:Restoreไปยังข้อโต้แย้ง MSBuild ของคุณใน Build Solution


9

สำหรับฉันเมื่อฉันทำ - dotnet restore ข้อผิดพลาดยังคงเกิดขึ้น

ฉันไปที่

1 เครื่องมือ -> ผู้จัดการแพคเกจ NuGet -> การตั้งค่าตัวจัดการแพคเกจ -> คลิกที่ "Clear on Nuget Catche (s)"

2 dotnet restore

ปัญหาที่แก้ไขแล้ว


ฉันจะลองทำสิ่งนี้ในครั้งต่อไปที่มันเกิดขึ้น อาจเป็นวิธีที่ดีกว่าของฉัน (ปิดและเปิดใหม่อีกครั้ง VS) ซึ่งโดยทั่วไปจะใช้เวลานานสำหรับฉัน
ดีเด่นเรียกเก็บเงิน

6

ใน visual studio 2017 โปรดทำตามขั้นตอนต่อไปนี้:

1) เลือกเครื่องมือ => ตัวเลือก => ตัวจัดการแพ็คเกจ NuGet => แหล่งที่มาของแพคเกจจากนั้นยกเลิกการเลือกตัวเลือก แพคเกจออฟไลน์ Microsoft Visual Studioป้อนคำอธิบายรูปภาพที่นี่

2) ตอนนี้เปิด Tool => NuGet Package Maneger => คอนโซลตัวจัดการแพคเกจ 3) เรียกใช้งานคำสั่งใน PM> dotnet restore

หวังว่ามันจะทำงาน ...


6

สำหรับฉันฉันอัพเกรด NuGet.exe จาก 3.4 เป็น 4.9 เพราะ 3.4 ไม่เข้าใจวิธีการคืนค่าแพ็คเกจสำหรับ. NET Core

สำหรับรายละเอียดโปรดดูdotnet restore กับ nuget restore กับ teamcity


ใช่ - ฉันพบสิ่งนี้เมื่อเราเริ่มย้ายโครงการ. Net Framework เก่าไปยัง.csprojรูปแบบโครงการใหม่
StuartLC

5

เลือกเครื่องมือ > ตัวจัดการแพ็คเกจ NuGet > คอนโซลตัวจัดการแพคเกจ

จากนั้นเรียกใช้:

dotnet restore <project or solution name>

3

สายไปที่คำตอบเล็กน้อย แต่ดูเหมือนว่าจะเป็นการเพิ่มมูลค่า ดูที่ข้อผิดพลาด - ดูเหมือนว่าจะเกิดขึ้นใน CI / CD ไปป์ไลน์

เพียงแค่เรียกใช้ "dotnet build" ก็เพียงพอแล้ว

dotnet build

dotnet build รัน "กู้คืน" โดยค่าเริ่มต้น


1
สามารถทำได้โดยการเพิ่มขั้นตอน ". NET core" ไปยังไปป์ไลน์ (ก่อนสร้าง) และเลือกคำสั่ง "dotnet restore" จากดรอปดาวน์ ฉันกำลังพูดถึงเฉพาะเกี่ยวกับไปป์ไลน์ VSTS ที่นี่
Lech Osiński

3

ไม่มีอะไรข้างต้นทำงานให้ฉัน แต่เพียงลบโฟลเดอร์ 'bin' และ 'obj' ทั้งหมดเท่านั้น


ปัญหานี้เกิดขึ้นกับฉันเมื่อฉันทำงานกับ Dockerfile การลบโฟลเดอร์เหล่านั้นทำให้ dotnet restore ในคอนเทนเนอร์ทำงานได้อย่างถูกต้อง
โยฮันเนส


2

เมื่อใช้ VSTS ให้ตรวจสอบไฟล์ global.json ของคุณ ฉันป้อนรุ่น sdk เป็นเพียง "2.2" ซึ่งทำให้เกิดข้อผิดพลาดในการแยกวิเคราะห์ (แต่ไม่ใช่เมื่อสร้างในเครื่อง) การเพิ่มเวอร์ชั่นเต็ม "2.2.104" ช่วยแก้ปัญหาได้


2

ฉันพลาดข้อผิดพลาดนี้ใน Azure DevOps หลายชั่วโมงเมื่อฉันตั้งค่างาน 'Visual Studio Build' ในไพพ์ไลน์การ build เพื่อสร้างแต่ละโครงการในโซลูชันของฉันแทนที่จะเป็นโซลูชันทั้งหมด

การทำเช่นนั้นหมายความว่า DevOps จะไม่สร้างใด ๆ (หรืออาจเป็นไปได้บางอย่างฉันไม่แน่ใจว่า) ของโครงการที่อ้างอิงโดยโครงการที่คุณกำหนดเป้าหมายสำหรับการสร้างและดังนั้นโครงการเหล่านั้นจะไม่มี project.json สร้างไฟล์. asset ซึ่งทำให้เกิดปัญหานี้

ทางออกสำหรับฉันคือเปลี่ยนจากการใช้งาน VS Build เป็นงาน MSBuild การใช้งาน MSBuild สำหรับแต่ละโครงการอย่างถูกต้องสร้างโครงการใด ๆ ที่อ้างอิงโดยโครงการที่คุณกำลังสร้างและกำจัดข้อผิดพลาดนี้


2

หากข้อผิดพลาดนี้เกิดขึ้นเป็นส่วนหนึ่งของบิลด์ในAzure DevOps (TFS)และบิลด์ของคุณมีงานกู้คืน NuGetอยู่แล้วข้อผิดพลาดนี้อาจระบุว่างานกู้คืน NuGet นั้นไม่สามารถกู้คืนแพ็คเกจทั้งหมดได้โดยเฉพาะอย่างยิ่ง เช่นเซิร์ฟเวอร์ NuGet ภายใน) การเพิ่ม/t:Restore;Buildไปยังอาร์กิวเมนต์ MSBuild ดูเหมือนจะเป็นวิธีหนึ่งในการแก้ไขข้อผิดพลาด แต่สิ่งนี้จะขอให้ MSBuild ทำการดำเนินการกู้คืน NuGet เพิ่มเติม ฉันเชื่อว่าสิ่งนี้สำเร็จเนื่องจาก MSBuild ใช้แหล่งข้อมูลแพคเกจที่กำหนดเองที่กำหนดค่าใน Visual Studio ทางออกที่ดีกว่าคือการแก้ไขงานคืนค่าของ NuGet

ในการกำหนดค่าซอร์สแพ็กเกจที่กำหนดเองสำหรับงานกู้คืน NuGet:

  1. สร้าง NuGet.configไฟล์ที่แสดงรายการแพ็กเกจทั้งหมด (แพ็กเกจออฟไลน์ Microsoft Visual Studio, nuget.org และซอร์สแพ็กเกจแบบกำหนดเองของคุณ) และเพิ่มลงในคอนโทรลแหล่งที่มา
  2. ในการเรียกคืน Nuget งานภายใต้การฟีดการใช้งาน:เลือกตัวเลือกที่ฟีดใน NuGet.config
  3. NuGet.configให้เส้นทางไปยัง
  4. ลบ/t:Restore;Buildตัวเลือกจากงาน MSBuild

ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่


1

หากการกู้คืนแพคเกจ NuGet ไม่สามารถใช้งานได้ให้แน่ใจว่าในเครื่องมือ -> ตัวเลือก -> ตัวจัดการแพ็กเกจ NuGet -> ทั่วไปภายใต้การคืนค่าแพคเกจว่ามีการทำเครื่องหมาย "อนุญาตให้ดาวน์โหลด NuGet เพื่อดาวน์โหลดแพ็คเกจที่หายไป"

จากนั้นเรียกคืนแพคเกจ NuGetอีกครั้งหรือเพียงแค่สร้างใหม่หลังจากลบโฟลเดอร์ obj และ bin


1

หากข้อเสนอแนะ @ Mostafa-bouzari ไม่ช่วยตรวจสอบอย่างระมัดระวังในหน้าต่าง 'รายการข้อผิดพลาด' หรือ 'เอาท์พุท' เพื่อหาข้อผิดพลาดที่ NuGet ไม่สามารถกู้คืนได้เช่นเนื่องจากปัญหาเน็ตหากคุณอยู่หลังพรอกซี


ในกรณีของฉันการคืนค่า Nuget ไม่สามารถเชื่อมต่อกับที่เก็บข้อมูล NuGet ส่วนตัวของเราได้เนื่องจากฉันไม่ได้เชื่อมต่อกับ VPN ของ บริษัท การตรวจสอบบันทึกแพคเกจคอนโซลคอนโซลช่วย
Alexander Puchkov

1

ปัญหานี้เกิดขึ้นเมื่อเครื่องมือสร้างของคุณไม่ได้ถูกตั้งค่าให้ทำrestoreในโครงการที่ตั้งค่าให้ใช้PackageReferencevs packages.configและส่วนใหญ่จะส่งผลต่อ Net Core และ Netstandard สไตล์โครงการใหม่

เมื่อคุณเปิด Visual Studio และสร้างมันจะแก้ไขสิ่งนี้ให้คุณ แต่ถ้าคุณใช้ระบบอัตโนมัติเครื่องมือ CLI คุณจะเห็นปัญหานี้

โซลูชั่นมากมายมีให้ที่นี่ restoreแต่สิ่งที่คุณต้องจำไว้ว่าคุณจะต้องมีผลบังคับใช้ ในบางกรณีคุณใช้dotnet restoreก่อนการสร้าง หากคุณสร้างโดยใช้ MsBuild เพียงเพิ่ม/t:Restoreสวิตช์ไปยังคำสั่งของคุณ

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


1

ประสบการณ์แปลก ๆ ที่ฉันได้พบ!

ฉันโคลนด้วย GIT bash และ GIT cmd-Line ก่อนหน้านี้ฉันพบปัญหาข้างต้น

ต่อมาฉันโคลนกับ Tortoise-GIT และทุกอย่างทำงานตามที่คาดไว้

อาจเป็นคำตอบที่บ้า แต่การลองครั้งนี้อาจช่วยคุณประหยัดเวลา!


1

เห็นสิ่งนี้หลังจากเพิ่มโครงการ WinForms Core 3.1 (จากเทมเพลตโครงการ) บน VS-2019 เทียบกับ 16.4.0 และพยายามเรียกใช้ออกจากกล่อง ล้างหรือสร้างโซลูชันใหม่ทั้งหมดไม่ทำงาน

ฉันเพิ่งโหลดโซลูชันของฉันอีกครั้ง .. นั่นคือ File / Close Solution จากนั้นเปิดใหม่อีกครั้งและสร้างใหม่อีกครั้งเพื่อแก้ไขปัญหา


0

ฉันได้รับข้อผิดพลาดเมื่อฉันสร้างแลมบ์ดาใน dot net core ใน VS2017 สิ่งที่ใช้ได้ผลสำหรับฉันคือการยกเลิกการโหลดโครงการและโหลดกลับมา


0

เรียกใช้ VS ของคุณในฐานะผู้ดูแลระบบหลังจากนั้นในคอนโซลตัวจัดการแพคเกจให้เรียกใช้ dotnet restore


0

อีกรายการหนึ่งหากมีโอกาสที่คุณใช้ Dropbox อยู่ให้ตรวจสอบConflictedในชื่อไฟล์ทำการค้นหาใน repo ของคุณและลบไฟล์ที่ขัดแย้งทั้งหมด

สิ่งนี้อาจเกิดขึ้นหากคุณย้ายไฟล์ไปมา


0

สาเหตุของข้อบกพร่องนี้คุณต้องลบ Nuget ที่ถูกฉีดเข้าไปใน file explorer การแก้ไข: เมื่อคุณลบ Nuget นั้นในระบบของคุณแล้วลบออกจากตำแหน่งต่อไปนี้ เลือกเครื่องมือ => ตัวเลือก => ตัวจัดการแพคเกจ NuGet => แหล่งที่มาของแพคเกจแล้วยกเลิกการเลือกตัวเลือกแพคเกจออฟไลน์ Microsoft Visual Studio



0

ในกรณีของฉันฉันมีปัญหากับแหล่งแพ็กเกจที่มีอยู่ ฉันย้ายโฟลเดอร์ที่เก็บข้อมูลโลคัล nuget ไปยังพา ธ ใหม่ แต่ฉันไม่ได้อัพเดตในแหล่งข้อมูลแพ็กเกจที่มีอยู่ของ Nuget เมื่อฉันแก้ไขปัญหาเส้นทางให้อัปเดตในแหล่งข้อมูลแพคเกจที่มีอยู่และหลังจากนั้นทุกอย่าง (ตัวสำรองข้อมูลปลั๊กอิน ฯลฯ ) ก็ใช้งานได้ดี


0

สำหรับฉันมันกลายเป็นปัญหาข้อมูลประจำตัวของแหล่งที่มาของนักเก็ต ฉันเพิ่งเปลี่ยนรหัสผ่านสำหรับการเข้าถึงเซิร์ฟเวอร์ nexus และ Visual Studio ยังคงใช้รหัสผ่านเดิมเมื่อพยายามเข้าถึง nuget บนเซิร์ฟเวอร์นั้นผ่านตัวจัดการข้อมูลรับรองของ windows ในการแก้ไขฉันต้องลบรายการสำหรับข้อมูลประจำตัวที่ล้าสมัยเหล่านั้นในตัวจัดการข้อมูลประจำตัวและหลังจากเมื่อฉันทำการกู้คืน nuget แล้วระบบจะขอให้ฉันใส่รหัสผ่านเพื่อให้ฉันป้อนรหัสผ่านใหม่ซึ่งได้บันทึกไว้ในตัวจัดการข้อมูลประจำตัวอีกครั้ง คุณสามารถเข้าถึงตัวจัดการข้อมูลประจำตัวได้จากบรรทัด cmd โดยใช้ CmdKey.exe


0

ลองนี้ (มันใช้งานได้สำหรับฉัน):

  • เรียกใช้ VS ในฐานะผู้ดูแลระบบ
  • NuGet อัปเดตด้วยตนเองเป็นเวอร์ชันล่าสุด
  • ลบไฟล์ bin และ obj ทั้งหมดในโครงการ
  • รีสตาร์ท VS
  • คอมไพล์

0

คุณสามารถไปที่: เครื่องมือ> ตัวจัดการแพ็คเกจ NuGet> คอนโซลตัวจัดการแพคเกจ

จากนั้นเรียกใช้:

dotnet restore

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.