ฉันจะหาแพ็คเกจ NuGet สำหรับอัพเกรดเป็น System.Web.Http v5.0.0.0 ได้ที่ไหน


125

เพิ่งอัปเกรดโครงการ ASP.NET MVC4 เพื่อใช้ Unity.WebApi เวอร์ชัน 5.0.0.0 และต้องใช้ System.Web.Http v 5.0.0.0 ตามข้อผิดพลาดต่อไปนี้:

Assembly 'Unity.WebApi, Version=5.1.0.0, Culture=neutral, PublicKeyToken=43da31bc42a85347' uses 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'   

ขณะนี้ฉันกำลังอ้างอิง System.Web.Http v4.0 แต่มีแพ็คเกจ NuGet ต่อไปนี้ที่อัปเกรดเป็นเวอร์ชันล่าสุดตามลำดับ:

  • ANTLRv3

  • ผู้ให้บริการ Microsoft ASP.NET Universal

  • Microsoft.Web.Infrastructure

  • Microsoft ASP.NET MVC

  • มีดโกน Microsoft ASP.NET

  • Microsoft ASP.NET Universal Providers Core Libraries

  • ผู้ให้บริการ Microsoft ASP.NET Universal

  • ไคลเอนต์ Microsoft ASP.NET Web API 2

  • Microsoft ASP.NET Web API 2 Core

  • โฮสต์เว็บ Microsoft ASP.NET Web API 2

  • Microsoft ASP.NET Web API 2

  • หน้าเว็บ Microsoft ASP.NET

  • Microsoft.Web.Infrastructure

  • WebGrease

    ผ่าน NuGet ฉันไม่ได้แสดงรายการไลบรารี JavaScript ที่เกี่ยวข้องเช่น Micrososft.jQuery การตรวจสอบที่ไม่สร้างความรำคาญ ฯลฯ

แพ็คเกจ NuGet สำหรับอัพเกรด System.Web.Http คืออะไรหรือต้องทำด้วยตนเอง?


หากคุณเลือก "Include Prerelease" แทน "Stable" ใน NuGet Package Manager คุณจะเห็น System.Web.Http นั่นคือสิ่งที่คุณกำลังมองหาใช่ไหม
— William

ฉันควรจะค้นหา System.Web.Http หลังจากเลือก "Include Prerelease" หรือไม่ หรือควรหาที่ไหน
— Klaus Nji

ไม่สนใจความคิดเห็นด้านบนของฉัน! แพ็กเกจนั้นล้าสมัย คุณควรลองทำตามคำแนะนำของ Stjin ด้านล่างนี้ น่าแปลกที่เมื่อฉันติดตั้ง Unity WebApi ในโปรเจ็กต์ MVC 4 ของฉันมันจะอัปเดตการอ้างอิง System.Web.Http ไปที่ v5.0 โดยอัตโนมัติดังนั้นฉันไม่แน่ใจว่าทำไมมันถึงไม่เหมาะกับคุณ หากทุกอย่างล้มเหลวคุณสามารถลองถอนการติดตั้งแพ็คเกจ Unity และติดตั้งใหม่
— William

คำตอบ:


207

คุณต้องมีแพ็คเกจMicrosoft.AspNet.WebApi.Core

คุณสามารถดูได้ในไฟล์. csproj:

<Reference Include="System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45\System.Web.Http.dll</HintPath>
</Reference>

ฉันมี Microsoft ASP.NET Web API 2 Core (id = Microsoft.AspNet.WebApi.Core) อัปเกรดเป็น v5.0.0.0 ตามรายการด้านบน ดูเหมือนว่าฉันจำเป็นต้องลบและเพิ่มใหม่?
— Klaus Nji

7
ต้องล้างลบ bin_deployableAssemblies และสร้างใหม่
— Klaus Nji

เกือบจะมีโครงการเดียวกัน โฟลเดอร์ bin_deployable Assemblies ที่ทุกคนพูดถึงอยู่ที่ไหน
— nzondlo

@nzondlo ฉันเชื่อว่าโฟลเดอร์ถูกสร้างขึ้นเมื่อเผยแพร่แอปพลิเคชัน ไม่แน่ใจว่าทั้งหมด
— user247702

1
@nzondlo bin_deployableAssembliesเป็นเพียงโฟลเดอร์ธรรมดา แต่จะได้รับการดูแลเป็นพิเศษเมื่อมีอยู่ในไดเรกทอรีของโครงการของคุณ ไฟล์. dll ใด ๆ ในโฟลเดอร์นั้นจะถูกคัดลอกไปยังไดเร็กทอรี bin เมื่อคุณเผยแพร่เว็บแอปพลิเคชันของคุณ มันถูกใช้เพื่อปรับใช้ System.Web.Mvc dll (และอื่น ๆ ) กับเว็บแอปของคุณก่อนที่ NuGet จะกลายเป็นกระแสหลัก
— Steven Liekens

9

ฉันมีหลายโครงการในการแก้ปัญหา สำหรับบางโครงการฉันได้เพิ่มการอ้างอิงด้วยตนเองก่อนหน้านี้ เมื่อฉันใช้ NuGet เพื่ออัปเดตแพ็คเกจ WebAPI การอ้างอิงเหล่านั้นไม่ได้รับการอัปเดตโดยอัตโนมัติ

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

  1. ไปที่ "จัดการแพ็คเกจ NuGet"
  2. เลือกแพ็คเกจที่ติดตั้ง "Microsoft ASP.NET Web API 2.1"
  3. คลิกจัดการและตรวจสอบโครงการที่ฉันเพิ่มด้วยตนเองก่อนหน้านี้

การถอนการติดตั้งแพคเกจแล้วติดตั้งใหม่ทันทีจะแก้ไขให้ฉัน เกิดขึ้นเมื่อนำโครงการขึ้นเครื่องพัฒนาอื่น การคืนค่าแพ็กเกจอัตโนมัติมีเวอร์ชันที่ไม่ถูกต้อง
— Matt J.

1
ปัญหาหลักคือการอัปเดต Web.Api สำหรับโปรเจ็กต์หลัก แต่โปรเจ็กต์ที่อ้างอิงยังคงใช้เวอร์ชันเก่ากว่า ควรอัปเดตร่วมกันโดยคลิกขวาที่ชื่อโซลูชันและเมนู Manage Nuget Packages ตามที่ @Tony กล่าวถึง ไชโย!
— Orhaan

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