ฉันจะหาแพ็คเกจ 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.