ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Net.Http.Formatting' หรือการอ้างอิงอย่างใดอย่างหนึ่ง ระบบไม่สามารถหาเส้นทางที่ระบุ


158

ฉันมีแอป MVC ขนาดเล็กที่ฉันใช้เพื่อเหตุผลในการฝึกฝน แต่ตอนนี้ฉันกำลังพบข้อผิดพลาดทุกครั้งที่ฉันพยายามตรวจแก้จุดบกพร่อง:

Could not load file or assembly 'System.Net.Http.Formatting' or one of its dependencies. 
The system cannot find the path specified.

ฉัน googled แต่ไม่สามารถหาทางออกได้ ฉันใช้. NET 4.5

ไม่สามารถเป็นไฟล์ DLL ได้เพราะฉันใช้. Net 4.5


1
ดูการพึ่งพาที่นี่ .. nuget.org/packages/System.Net.Http.Formatting
Vishal Sharma

ฉันลองมันแล้วมันใช้งานไม่ได้ ... แต่ฉันได้รับข้อผิดพลาดเกี่ยวกับ Package Manager โดยบอกว่า 'NuGetCmdletUnhandledException, NuGet.PowerShell.Commands.InstallPackageCommand'
Norris

คำตอบ:


185

เมื่อใดก็ตามที่ฉันมีข้อผิดพลาด NuGet เช่นนี้ฉันมักจะทำตามขั้นตอนเหล่านี้:

  1. ไปที่โฟลเดอร์แพ็คเกจใน Windows Explorer และลบทิ้ง
  2. เปิด Visual Studio และไปที่เครื่องมือ > ตัวจัดการแพคเกจไลบรารี > การตั้งค่าตัวจัดการแพคเกจและภายใต้รายการตัวจัดการแพคเกจทางด้านซ้ายมือจะมีปุ่ม "ล้างแพคเกจแคช" คลิกปุ่มนี้และตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายในช่องทำเครื่องหมาย "อนุญาต NuGet เพื่อดาวน์โหลดแพ็คเกจที่ขาดหายไปในระหว่างการสร้าง"
  3. ทำความสะอาดทางออก
  4. จากนั้นคลิกขวาที่โซลูชันใน Solution Explorer และเปิดใช้งาน NuGet Package Restore
  5. สร้างโซลูชัน
  6. เริ่ม Visual Studio ใหม่

ทำตามขั้นตอนทั้งหมดเหล่านี้คืนค่าแพ็คเกจทั้งหมดและ dll ที่ฉันต้องการสำหรับโปรแกรม MVC ของฉัน


แก้ไข >>>

สำหรับ Visual Studio 2013 ขึ้นไปขั้นตอนที่ 2) ควรอ่าน:

  1. เปิด Visual Studio และไปที่เครื่องมือ > ตัวเลือก > NuGet Package Managerและทางด้านขวามือจะมีปุ่ม "ล้างแพคเกจแคช" คลิกปุ่มนี้และตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายในช่องทำเครื่องหมาย "อนุญาต NuGet เพื่อดาวน์โหลดแพ็คเกจที่ขาดหายไป" และ "ตรวจสอบแพ็คเกจที่หายไปโดยอัตโนมัติในระหว่างการสร้างใน Visual Studio"

7
วิธีนี้ใช้งานได้ ... แก้ไขปัญหาได้แล้ว ... ขอบคุณ Jordan_Walters ... ฉันมีตัวแทนไม่เพียงพอที่จะลงคะแนน ... ไม่เช่นนั้นความช่วยเหลือของคุณจะได้รับการชื่นชมมาก
Norris

10
คำแนะนำที่ดี แต่มันไม่ได้แก้ไขปัญหาของฉันด้วย "ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Net.Http.Formatting' หรือการอ้างอิงอย่างใดอย่างหนึ่งระบบไม่พบพา ธ ที่ระบุ" สำหรับฉันฉันต้องไปที่ Tools / NuGet Package Manager / Package Manager Console จากนั้น "Update-Package --ProjectName MyProject --reinstall" ทุกอย่างได้รับการแก้ไข!
GeoMac

3
@YuraZaletskyy ฉันคิดว่าเป็น $ {SolutionDir} / packages / นั่นคือโฟลเดอร์โซลูชันราก
jakejgordon

1
เคล็ดลับยอดเยี่ยมขอบคุณพวกเขาช่วยฉันจริงๆ ฉันหวังว่าคุณจะไม่รังเกียจที่จะเพิ่มข้อมูลเพิ่มเติมเพื่อสะท้อนถึง Visual Studio รุ่นที่ใหม่กว่า
Sheridan

1
ฉันปฏิบัติตามข้างต้นและยังมีข้อผิดพลาดอยู่ - ฉันดูรุ่น dll ด้วยตนเองและเมื่อฉันตรวจสอบไฟล์ web.config ของฉันมีรายการที่ซ้ำกันออกจากรายการเดียวเพื่อให้ตรงกับรุ่น dll ของคุณและทุกอย่างจะทำงาน - มันสำหรับฉัน
JazziJeff

168
  • ลบรหัสอ้างอิงทั้งหมดไปที่ System.Net.*

  • ในหน้าต่างแพคเกจ

    Install-Package Microsoft.AspNet.WebApi.Client

  • ทำความสะอาดและสร้างโครงการของคุณใหม่


2
ฉันพบปัญหานี้และติดตั้ง NuGet รุ่นล่าสุดของ Microsoft.AspNet.WebApi.Client และฉันเห็น System.Net.Http.Formatting ในรายการอ้างอิงของฉัน
ewomack

ฉันลองทุกอย่างอื่น นี่เป็นคนเดียวที่ทำงานให้ฉัน
Timothy Kanski

ทำงานให้ฉัน ตรวจสอบให้แน่ใจว่าคุณติดตั้งเวอร์ชันที่ถูกต้อง
CrusherJoe

1
การแก้ปัญหานี้ทำงานหลังจากที่ฉันอัปเดตของฉันWeb.Config bindingRedirectสำหรับ System.Net.Http.FormattingและSystem.Web.Httpไปใหม่ติดตั้งโดยคำสั่งดังกล่าว ... คือมันเดินออกมาจาก<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>ไป<bindingRedirect oldVersion="0.0.0.0-4.0.30319" newVersion="4.0.30319"/>
Serj เซแกน

เป็นกรณีนี้หรือไม่ที่พวกเราหลายคนหายไปจากแพ็คเกจ Microsoft.AspNet.WebApi.Client NuGet?
carlin.scott

27

ฉันพบสิ่งพิเศษ

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" />
  </dependentAssembly>

ในเว็บของฉัน ลบออกเพื่อให้มันใช้งานได้ ฉันติดตั้งแพคเกจอื่นแล้วลบออกทำให้เกิดปัญหา


คุณจะรู้ได้อย่างไรว่าโทเค็นสาธารณะเป็นเวอร์ชันอะไร b03f5f7f11d50a3a
eran otzap

มันถูกเพิ่มโดยอัตโนมัติโดยคำสั่งคอนโซลตัวจัดการแพคเกจ: Add-BindingRedirect *
Simon Hughes

18

user3919888 ชี้ให้ฉันในทิศทางที่ถูกต้อง แต่ฉันต้องทำงานUpdate-Package -reinstall Microsoft.AspNet.WebApi.Clientในคอนโซล Package-Manager การติดตั้งพื้นฐานด้วยตัวเองไม่ได้รับรู้ปัญหา แต่ไม่ได้รับการยอมรับว่ามีการติดตั้งแพคเกจแล้วและไม่ได้เขียนทับมัน

ฉันโพสต์คำตอบนี้เพราะสิ่งนี้เกิดขึ้นนาน ๆ ครั้งจนฉันจบ googling และไปที่หน้านี้ก่อนที่ฉันจะจำสิ่งที่ฉันทำครั้งสุดท้าย


16

การลบบรรทัดต่อไปนี้ออกจากการweb.configแก้ไขปัญหาของฉัน โปรดทราบว่าในโครงการนี้ฉันไม่ได้ใช้ส่วนประกอบ WebApi ดังนั้นสำหรับผู้อื่นวิธีนี้อาจไม่ได้ผลตามที่คาดไว้

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>

คุณจะรู้ได้อย่างไรว่าโทเค็นสาธารณะเป็นเวอร์ชันอะไร
eran otzap

ที่ฉันรู้ว่ามันเป็นโทเค็นสาธารณะของ Microsoft dll ทั้งหมดโดยไม่คำนึงถึงรุ่นของพวกเขา
Mahmoud Moravej

จะตลกฉันได้เพิ่มบรรทัดเหล่านี้และมันช่วย
Krzysztof Madej

นั่นแก้ไขปัญหาให้ฉันด้วย
Vishal

นี่เป็นการแก้ไขปัญหาของฉันเช่นกัน ฉันได้แปลงโครงการเว็บไซต์เก่าเป็นเว็บแอปพลิเคชัน ไฟล์ Web.config อ้างอิงเวอร์ชัน 5.2.7 ในขณะที่แพ็คเกจ NuGet ที่ติดตั้งคือ 5.2.3 การลบสิ่งนี้จาก Web.config แก้ไขข้อผิดพลาด
Cesar Daniel

9

สำหรับผู้ที่ใช้โครงการ. NET Standardร่วมกับโครงการ. NET Framework :

ในวิธี. NET มาตรฐานแพคเกจที่รวมอยู่ในโครงการ. NET มาตรฐานจะถูกใช้อย่างถูกต้องในโครงการ. NET Core และ. NET มาตรฐานอื่น ๆ

ด้วยวิธี. NET Framework หากคุณอ้างถึงโครงการ. NET Standard จากโครงการ. NET Framework (MVC) คุณต้องดาวน์โหลดและติดตั้งแพ็กเกจ nuget เดียวกันด้วยตนเอง

ดังนั้นคำตอบสำหรับคำถามของฉันคือฉันต้องดาวน์โหลดและติดตั้งMicrosoft.AspNet.WebApi.Clientในโครงการเว็บ (. NET Framework) ที่ใช้โครงการ. NET มาตรฐานที่Microsoft.AspNet.WebApi.Clientจำเป็น ที่จริงแล้วฉันติดตั้งสิ่งนี้ไปแล้วแต่มีความแตกต่างของรุ่น

ฉันเพิ่งเพิ่มคำตอบนี้เพื่อให้คนอื่นเห็นมันอาจไม่ตอบคำถามของ OP โดยตรง แต่มันช่วยฉันประหยัดเวลาด้วยการตรวจสอบครั้งแรกแทนที่จะทำตามคำตอบที่ได้รับการโหวตสูงสุด


1
ฉันใช้. NET Core และพบแนวทางในการเยาะเย้ย HttpClient ในgingter.org/2018/07/26/ … คำแนะนำดังกล่าวทำให้ฉันมีปัญหาที่อธิบายในคำถามของ OP และคุณแก้ปัญหาได้แล้ว :)
Thorkil Værge

นี่คือสิ่งที่ได้ผลสำหรับฉัน พยายามใช้วิธีที่แนะนำให้นำออกและเรียกคืนแพ็คเกจทั้งหมด แต่ในที่สุดฉันก็ต้องใช้ Nuget เพื่อติดตั้ง Microsoft.AspNet.WebApi.Client ทำให้แน่ใจว่าเป็นรุ่นที่ฉันต้องการและทุกอย่างก็ดีหลังจากนั้น
TH Todorov

คำตอบที่ดี - ฉันเริ่มคิดว่าฉันต้องย้ายทุกอย่างกลับสู่ Framework!
d219

6
  1. ลบรหัสอ้างอิงทั้งหมดไปที่ System.Net.*
  2. ถอนการติดตั้ง: แพ็คเกจ Microsoft.AspNet.WebApiและการอ้างอิง
  3. ติดตั้งใหม่ทั้งหมด: แพ็คเกจ Microsoft.AspNet.WebApiและการอ้างอิง
  4. ทำความสะอาดและสร้างโครงการของคุณใหม่

ขอบคุณ! คุณบันทึกฉันหลังจากพยายามหมดหวัง 2 วัน มันเกือบทำให้ฉันบ้า
Marek Dorda

5

ตามที่แนะนำไว้ในการแสดงความคิดเห็นโดยGeoMacและบันทึกไว้ในเอกสารของ NuGetต่อไปนี้ใช้ได้กับฉันเมื่อไม่มีคำตอบอื่นใดที่ทำงาน:

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

Update-Package -ProjectName MyProjectName -reinstall

ฉันมี Visual Studio 2015 นี่คือสิ่งที่ฉันต้องทำแก้ไขทันที
เดเมียน C

3

ในกรณีของฉันไม่มีการแก้ปัญหาข้างต้นทำงาน ฉันแก้ไขได้โดยคลิกขวาที่ข้อมูลอ้างอิง

System.Net.Http.Formatting

จากภาพในสตูดิโอและการตั้งค่าสถานที่ให้บริการคัดลอกท้องถิ่นที่จะเป็นจริงเป็นจริง

ฉันหวังว่านี่จะเป็นประโยชน์อย่างใด


2
ฉันทำอย่างนั้นและมันยังคงเกิดขึ้น
eran otzap

2

สิ่งที่แก้ไขข้อผิดพลาดที่น่ารำคาญสำหรับฉันก็คือการปิด Visual Studio และเปิดอีกครั้ง จากนั้นสร้างโซลูชันขึ้นใหม่และทำงานได้อีกครั้ง ขออภัยสำหรับคำตอบอึ แต่ฉันคิดว่ามันคุ้มค่าคำตอบเพราะมันแก้ไขให้ฉัน


1
นี่คือทั้งหมดที่ฉันต้องใช้ด้วย
Steve Vermeulen

1

สำหรับฉันมันง่ายเหมือน

  1. ลบMicrosoft.AspNet.WebApi.Clientออกจากโฟลเดอร์แพ็คเกจใน Windows Explorer
  2. เปิดเครื่องมือ> ตัวจัดการแพ็คเกจ NuGet> คอนโซลตัวจัดการแพคเกจ
  3. คลิกปุ่ม "กู้คืน"

1

ในกรณีของฉันไม่มีการทำงานใด ๆ ข้างต้นอย่างไรก็ตามการแทนที่ 5.2.3.0 กับ 4.0.0.0 ไม่สามารถแก้ปัญหาได้


1

ฉันกำลังเผชิญปัญหาเดียวกันเพราะ

System.Net.Http.Formatting

รุ่นที่เขียนภายใน webconfig คือ 5.0.3 แต่ในโฟลเดอร์ bin นั้นรุ่น System.Net.Http.FttatFormatting library คือ 4.0.2

ดังนั้นฉันจึงแทนที่ด้วยถังขยะที่ให้มาเหมือนกัน

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

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

เพียงทำโครงการที่สะอาดและสร้าง


0

อาจคุณต้องตั้งค่าการอ้างอิงไลบรารีเป็น "Copy Local = True" ในกล่องโต้ตอบคุณสมบัติ ใน Visual Studio คลิกที่ "การอ้างอิง" จากนั้นคลิกขวาที่การอ้างอิงที่หายไปจากคุณสมบัติคลิกเมนูบริบทคุณควรจะเห็นการตั้งค่าการคัดลอก


0

สำหรับฉันเพิ่มบรรทัดด้านล่างเล็กน้อยใน WebApi.config ทำงานเป็นหลังจากการปรับปรุงแพคเกจนักเก็ตใหม่ไม่ได้ผล

var setting = config.Formatters.JsonFormatter.SerializerSettings;
setting.ContractResolver = new CamelCasePropertyNamesContractResolver();
setting.Formatting = Formatting.Indented;

อย่าลืมเพิ่มเนมสเปซ:

using Newtonsoft.Json.Serialization; 
using Newtonsoft.Json;

โปรดตรวจสอบให้แน่ใจว่าได้ตรวจสอบการพึ่งพาโครงการโดยคลิกขวาที่ไฟล์โซลูชันแล้วภายใต้คุณสมบัติทั่วไป -> การพึ่งพาโครงการตรวจสอบโครงการที่เกิดข้อผิดพลาดหรือตรวจสอบชื่อโครงการที่ขึ้นอยู่กับวิธีแก้ไข
ashish Vicky

0

สิ่งที่ฉันทำเพื่อแก้ไขปัญหานี้คือ

  1. ไปที่ผู้จัดการแพ็คเกจ NuGet

  2. เลือกอัปเดต (จากแผงด้านซ้าย)

  3. อัปเดตองค์ประกอบ WebApi

  4. หลังจากนั้นโครงการจะทำงานโดยไม่มีข้อผิดพลาด


0

VS2019: เครื่องมือ -> Nuget Package Manager -> การตั้งค่าตัวจัดการแพคเกจ -> ในส่วนการคืนค่าแพคเกจตรวจสอบ 2 ตัวเลือก หลังจากนั้นไปที่โฟลเดอร์แพ็คเกจโครงการและลบโฟลเดอร์ย่อยทั้งหมดภายใน (เพื่อไม่ให้เกิดข้อผิดพลาดอีกต่อไป) จากนั้นสร้างโซลูชันใหม่ Nuget จะดาวน์โหลดแพ็คเกจทั้งหมดและโครงการควรทำงานโดยไม่มีการอ้างอิงใด ๆ


0

ฉันมีปัญหากับโครงการ ASP.NET ใน VS 2019

อาการอีกอย่างหนึ่งคือการอ้างอิงบางอย่าง (System.Web.Http) ถูกทำเครื่องหมายว่าผิดพลาดในรายการอ้างอิงโครงการ (Solution Explorer)

ทางออกของฉัน:

  1. ลบการอ้างอิงที่ผิดพลาดในโครงการ -> การอ้างอิง (คลิกขวา, ... )
  2. สร้าง
  3. นำทางไปยังข้อผิดพลาดของบิลด์ "ไม่พบประเภทหรือชื่อเนมสเปซ [... ]" หรือคล้ายกัน
  4. ใช้ "แสดงการแก้ไขที่อาจเกิดขึ้น" -> แพ็คเกจการติดตั้ง

สาเหตุ:

ดูความแตกต่างในไฟล์ csproj ฉันเห็นเหตุผลของปัญหา มีคนจัดการอ้างอิง DLL ในโฟลเดอร์ไฟล์ Windows Program!

<Reference Include="System.Web.Http">
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.