จะติดตั้งแพ็คเกจรุ่นเก่าผ่าน NuGet ได้อย่างไร?


384

ฉันต้องการติดตั้งแพ็คเกจรุ่นเก่ากว่า ( Newtonsoft.Json) แต่ NuGet ย้อนกลับ

PM> Install-Package Newtonsoft.Json -Version 4.0.5
Successfully installed 'Newtonsoft.Json 4.0.5'.
Install failed. Rolling back...
Install-Package : Already referencing a newer version of 'Newtonsoft.Json'.

ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก


คำตอบ:


579

ลองต่อไปนี้:

Uninstall-Package Newtonsoft.Json -Force

ติดตามโดย:

Install-Package Newtonsoft.Json -Version <press tab key for autocomplete>

twitterizer ใช้ Newtonsoft.Json ฉันต้องติดตั้งรุ่นเก่าโดยไม่ถอนการติดตั้งใหม่ PM> ถอนการติดตั้งแพ็กเกจ Newtonsoft.Json ถอนการติดตั้งแพ็คเกจ: ไม่สามารถถอนการติดตั้ง 'Newtonsoft.Json 4.0.8' เนื่องจาก 'twitterizer 2.4.0.26532' ขึ้นอยู่กับมัน
Nebide Yildiz

9
คุณไม่ได้กล่าวถึงการพึ่งพาแพคเกจที่มีอยู่ดังนั้นฉันจึงไม่ทราบว่าลองเพิ่ม -Force สวิตช์ไปที่คำสั่งถอนการติดตั้งแพ็กเกจ (ดังที่แก้ไขข้างต้น)
Xavier Decoster

ขอโทษที่หายไป - บังคับใช้และฉันติดตั้งรุ่นเก่ากว่า ขอบคุณมาก.
Nebide Yildiz

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

@Simon_Weaver ฉันสงสัยว่า EF 6 pkg กำลังทำสิ่งที่ทำให้เกิดสิ่งนี้ (สังเกตเห็นบางรหัส AppDomain สำหรับอินสแตนซ์ในสคริปต์ PowerShell ดังนั้น VS มีแนวโน้มที่จะจับ dll บางตัว)
Xavier Decoster

266

ในฐานะของNuget 2.8มีคุณสมบัติในการลดระดับแพ็คเกจ

Nuget 2.8 บันทึกประจำรุ่น

ตัวอย่าง:

คำสั่งต่อไปนี้ที่ป้อนใน Package Manager Console จะลดระดับไคลเอ็นต์ couchbase เป็นเวอร์ชัน 1.3.1.0

Update-Package CouchbaseNetClient -Version 1.3.1.0

ผลลัพธ์:

Updating 'CouchbaseNetClient' from version '1.3.3' to '1.3.1.0' in project [project name].
Removing 'CouchbaseNetClient 1.3.3' from [project name].
Successfully removed 'CouchbaseNetClient 1.3.3' from [project name].

สิ่งที่ควรทราบตาม crimbo ด้านล่าง:

"วิธีการนี้ใช้ไม่ได้กับการลดรุ่นจากรุ่นก่อนวางจำหน่ายหนึ่งเป็นรุ่นก่อนวางจำหน่ายอื่น ๆ - ใช้งานได้สำหรับการลดระดับรุ่นเป็นรุ่นวางจำหน่ายเท่านั้น"


13
นี่ควรเป็นคำตอบที่ได้รับการยอมรับว่าเป็นทางออกที่ดีที่สุดโดยใช้ความพยายามน้อยที่สุด
ปีเตอร์

ใช่ทำงานเหมือนมีเสน่ห์รวมถึงการลดระดับการพึ่งพาทั้งหมด - สมบูรณ์แบบ
เตอร์

7
น่าเสียดายที่วิธีการนี้ใช้ไม่ได้กับการลดรุ่นจากรุ่นก่อนวางจำหน่ายหนึ่งเป็นรุ่นก่อนวางจำหน่ายอีกรุ่นหนึ่ง - ใช้ได้กับการลดระดับรุ่นเป็นรุ่นวางจำหน่ายเท่านั้น
crimbo

@James Roland มันคงดีถ้าคุณสามารถเน้นคำเตือนก่อนวางจำหน่ายโดย crimbo ในคำตอบ
eglasius

51

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

ตัวอย่างเช่นหากคุณไม่ต้องการNewtonsoft.Jsonอัปเดตเวอร์ชันที่ผ่านมา3.x.xในโครงการของคุณให้เปลี่ยนpackageองค์ประกอบที่เกี่ยวข้องในpackages.configไฟล์ของคุณเป็นดังนี้:

<package id="Newtonsoft.Json" version="3.5.8" allowedVersions="[3.0, 4.0)" targetFramework="net40" />

แจ้งให้ทราบถึงallowedVersionsคุณลักษณะ สิ่งนี้จะ จำกัด รุ่นของแพ็คเกจนั้นเป็นรุ่นระหว่าง3.0( รวม ) และ4.0( พิเศษ ) จากนั้นเมื่อคุณทำในการแก้ปัญหาทั้งที่คุณไม่จำเป็นต้องกังวลเกี่ยวกับแพคเกจที่โดยเฉพาะอย่างยิ่งการปรับปรุงรุ่นที่ผ่านมาUpdate-Package3.x.x

เอกสารสำหรับการทำงานนี้อยู่ที่นี่


4
มีประโยชน์มากในการป้องกันการอัพเดทของ NuGet ไม่ให้ทำตามคำแนะนำของคุณ! (Microsoft.Net.Http v2.1.10 ฉันกำลังมองคุณอยู่ ... )
Douglas Barbin

6
ฉันกำลังดู JQuery 1.9 & 2.0
Martin Brown

Microsoft.Owin สำหรับฉัน :-)
bikeman868

19

ตอนนี้มันง่ายขึ้นมากในVisual Studio 2015เป็นต้นไป คุณสามารถทำได้Downgrade / Upgradeภายในส่วนต่อประสานผู้ใช้เองโดยไม่ต้องดำเนินการคำสั่งใน Package Manager Console

  1. Right click on your projectgo to Manage Nuget Packagesและ

  2. ดูภาพด้านล่าง

    • Select your Package and Choose the Versionซึ่งคุณต้องการติดตั้ง

หน้าต่าง Nuget Package Manager ของโครงการ

ง่ายมากใช่มั้ย :) หวังว่านี่จะช่วย ...


1
อ๋อ! นี่คือวิธีการที่จะไป :)
Impostor Syndrome

0

อีกตัวเลือกคู่มือเพิ่มเติมเพื่อรับมัน:

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