ฉันสามารถเก็บ Nuget ไว้บนพา ธ jQuery 1.9.x / 1.x ได้หรือไม่ (แทนที่จะอัปเกรดเป็น 2.x)


86

เช่นเดียวกับคนส่วนใหญ่ฉันใช้แพ็คเกจ jQuery Nugetเพื่อให้ทันสมัยอยู่เสมอ

อย่างไรก็ตามด้วยการเปิดตัว jQuery 2.0 ตอนนี้ฉันได้รับแจ้งให้อัปเกรด jQuery 1.9.1 เป็น 2.0 ในเวลานี้ผมมีผู้เข้าชมมากพอในเว็บไซต์ของฉันโดยใช้รุ่น 'โบราณ' ของเบราว์เซอร์ที่ฉันอยากจะยึดติดอยู่กับ 1.9.x และjQuery โยกย้าย

มีหรือไม่ที่จะบอกให้ Nuget ติดกับเวอร์ชันเฉพาะ (1.9.x) เมื่อตรวจสอบการอัปเดตของแพ็คเกจ (jQuery หรืออย่างอื่น)

ฉันใช้ส่วนขยาย Visual Studio 2010/2012 แต่ถ้าฉันจำเป็นต้องใช้อินเทอร์เฟซบรรทัดคำสั่งภายใน VS เพื่อแก้ไขปัญหานี้ฉันจะทำอย่างแน่นอน

หมายเหตุ:สิ่งหนึ่งที่อยู่ในใจของฉันคือพวกเขาทำให้การอัปเดตสับสน เนื่องจาก jQuery 1.9.x และ 2.0.x / 2.x แตกต่างกันพอสมควรดูเหมือนว่าพวกเขาควรสร้างแพ็คเกจ jQuery 2 (.0.x | .x) แทน

แน่นอนว่าผู้ที่ต้องการอัปเดตเป็น 2.x จะต้องรู้และเปลี่ยนแพ็คเกจที่ต้องการติดตั้ง แต่เนื่องจากมันมีการเปลี่ยนแปลงที่ทำลายอาจจะดีกว่า?


2
ตั้งแต่ 1.10.x ออกมาฉันได้อัปเดตชื่อเรื่องเพื่อให้ชัดเจนยิ่งขึ้น
James Skemp

2
เนื่องจากพวกเขาเก็บแพ็กเกจ nuget เดียวจะดีถ้าพวกเขาเพิ่งเพิ่ม jQuery ทั้งสองเวอร์ชันลงไปดังนั้นคุณจึงมีทั้งสาขา 1.x และ 2.x ในแพ็กเกจ nuget เดียวจากนั้นสามารถอ้างอิงรายการที่คุณต้องการได้
John

@ จอห์น - ฉัน ... ชอบความคิดนั้นมาก มันไม่เหมือนกับว่าแพ็กเกจจะอัปเดตการอ้างอิงใด ๆ ไปยังเวอร์ชันนั้น ๆ สิ่งเดียวที่ฉันคิดได้คือโครงการที่อาจต้องใช้ 2.x หรือ 1.x? แต่มันจะน่าสนใจว่าจะได้ผลหรือไม่ +1
James Skemp

คำตอบ:


117

ในความคิดของฉันนี่เป็นข้อผิดพลาดในส่วนของผู้เขียนแพ็คเกจ การอัปเดตที่ลบการสนับสนุนสำหรับเบราว์เซอร์หลายตัวควรทำเป็นแพ็กเกจ nuget เวอร์ชัน 2 แยกต่างหากและโฆษณาตามนั้นกล่าวคือมีข้อจำกัดความรับผิดชอบ ไลบรารี 1.9 ไม่ใช่แบบเดิมและจะได้รับการอัปเดตเพิ่มเติมในอนาคต ฉันได้ติดต่อกับผู้เขียนแพ็กเกจแล้วและจะเขียนเพิ่มเติมหากได้รับการตอบกลับ

ในระหว่างนี้คุณสามารถ จำกัด เวอร์ชันของแพ็กเกจของคุณได้โดยใช้ไวยากรณ์ต่อไปนี้ในpackages.config:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1]" />

มีข้อมูลเพิ่มเติมเกี่ยวกับข้อ จำกัด ของเวอร์ชันที่นี่:

http://docs.nuget.org/docs/reference/Versioning

หลังจากทำการเปลี่ยนแปลงการกำหนดค่าการอัปเดตไม่ควรอัปเกรดแพ็คเกจ jQuery ของคุณเป็นรุ่น 2.0 มีปัญหาในอดีตเกี่ยวกับตัวจัดการแพ็คเกจ UI ที่ไม่เคารพallowedVersionsแอตทริบิวต์ ( https://nuget.codeplex.com/workitem/1891 ) ดังนั้นคุณอาจต้องใช้บรรทัดคำสั่งหากคุณพบปัญหานี้

อย่างไรก็ตามสิ่งนี้ไม่สามารถแก้ปัญหาได้ว่าจะเกิดอะไรขึ้นเมื่อสาขา 1.9 ได้รับการอัปเดตเนื่องจากฟีดแพ็กเกจจะอยู่ในแทร็ก 2.0+ ฉันคิดว่าคุณจะต้องเปลี่ยนไปใช้แพ็คเกจนักเก็ตใหม่ที่เขียนขึ้นโดยเฉพาะเพื่อรองรับเวอร์ชัน 1.x 'ดั้งเดิม' หรือคัดลอกสคริปต์ด้วยตนเองทุกครั้ง

ไม่ว่าในกรณีใดฉันจะอัปเดตสิ่งนี้เมื่อเรียนรู้เพิ่มเติม

แก้ไข:

ผู้เขียนแพ็กเกจได้ระบุว่าทั้งเส้นทาง 1.x และ 2.x จะได้รับการสนับสนุนในอนาคตกล่าวคือฟีดแพ็กเกจจะมีเวอร์ชันคู่ขนานแทนที่จะแยกออก เท่าที่ฉันเห็นวิธีแก้ปัญหาคือใช้ข้อ จำกัด ของเวอร์ชันที่ระดับการกำหนดค่าแพ็คเกจเพื่อป้องกันการอัปเดตเป็นเวอร์ชัน 2.x เช่น:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1,2)" />

(การระบุทั้งเวอร์ชันต่ำสุดและสูงสุดในallowedVersionsควรอนุญาตให้อัปเดตโดยไม่ต้องเสี่ยงกับการเปลี่ยนไปใช้เวอร์ชัน 2.x อย่างไรก็ตามวงเล็บด้านขวาดูแปลก ๆ แต่ถูกต้องนั่นหมายถึง 'น้อยกว่าเวอร์ชัน 2')


เดฟขอขอบคุณที่ติดต่อผู้เขียนแพ็คเกจ ฉันโพสต์ความคิดเห็นในบล็อกโพสต์ประกาศ jQuery 2.0 เกี่ยวกับปัญหานี้ที่อาจเกิดขึ้นได้ ด้วยเหตุผลบางประการฉันคิดว่า jQuery ได้รับการดูแลโดย jQuery และเป็น jQuery Migrate ที่จัดการในนามของพวกเขา ควรมีการขุดเพิ่มเติม +1
James Skemp

@JamesSkemp - ใช่มันเป็นคำถามของคุณในโพสต์ประกาศที่พาฉันมาที่นี่ :) ขอบคุณที่ตั้งคำถาม - ฉันจะถูกจับได้เองถ้าคุณให้ความสนใจกับปัญหานี้ สถานการณ์ทั้งหมดค่อนข้างซับซ้อนมากกว่าที่จะเป็นจริง แต่ฉันหวังว่าคำตอบที่อัปเดตจะช่วยได้ หากฉันพบวิธีที่ง่ายกว่าในการจัดการการกำหนดเวอร์ชันฉันจะเพิ่มข้อมูลเพิ่มเติมอย่างแน่นอน
Dave R.

2
NuGet UI มีจุดบกพร่องที่ทำให้ระบบแจ้งให้อัปเดตเป็น jQuery 2.0 แม้ว่าคุณจะไม่อนุญาตให้อัปเดตใน package.config ก็ตาม เป็นเรื่องน่าขันที่ jQuery 2.0 ออกมาใกล้เคียงกับ NuGet 2.5 เวอร์ชัน 2.5 มีปุ่มอัปเดตทั้งหมดซึ่งจะดีมากหากไม่มีข้อบกพร่องนี้
Edward Brey

2
ฉันเห็นว่าตอนนี้มีjquery1แพ็คเกจบน nuget ซึ่งติดตามเฉพาะสาขา 1.x
Chris J

1
การอัปเดตคอนโซลเท่านั้นการอัปเดต UI ไม่ทำงานสำหรับฉัน (หลังจากอนุญาตให้เพิ่มเวอร์ชันแล้ว) UI ไม่อนุญาตให้เลือกโครงการใด ๆ เมื่อมีการพยายามอัปเดต
RockResolve

19

จะระบุรุ่นได้อย่างไร?

PM> ติดตั้งแพ็คเกจ jQuery -Version 1.9.1

ข้อมูลอ้างอิง: http://nuget.org/packages/jQuery/1.9.1


คำถามที่เกี่ยวข้องที่ฉันถาม: stackoverflow.com/q/16126338/11912ในระยะสั้นมันใช้งานได้ แต่มันเป็น klunky และการอัปเดตแบบตาบอดก็ทำลายมัน
James Skemp

ฉันเริ่มใช้คอนโซลมากขึ้นหลังจาก snafu เวอร์ชัน jQuery (ฉันจะเรียกมันว่า) ไม่ใช่ทางออกที่ดีที่สุด แต่เป็น +1
James Skemp

+1 เนื่องจากหากคุณอัปเกรดเป็น 2.x โดยไม่ได้ตั้งใจและต้องการกลับไปเป็น 1.9 และป้องกันไม่ให้อัปเกรดเป็น 2.x คุณต้องดาวน์เกรดด้วยตนเองเช่นนี้ก่อน / หลังเพิ่มข้อ จำกัด จากคำตอบที่อนุมัติ
Pluc

8

ตอนนี้ Nuget มีแพ็คเกจ jquery1ที่ติดตามเฉพาะสาขา 1.x ดังนั้นคุณควรจะสามารถสลับแพ็คเกจ jQuery หลักสำหรับแพ็คเกจนี้ได้


หาดี แม้ว่าหน้าจะต้องการการทำงานเล็กน้อยเพื่อให้อ่านได้ง่ายขึ้น แต่ฉันชอบความยืดหยุ่นที่ทำให้มี jQuery หลายเวอร์ชันพร้อมใช้งาน
James Skemp

แม้ว่านั่นจะทำให้เรากลับไปที่ความคิดเห็นของ John เกี่ยวกับคำถามนั้น คงจะดีไม่น้อยหากมีแพ็คเกจที่มีทั้ง 1.x และ 2.x พร้อมด้วยเวอร์ชันปัจจุบันของแต่ละแพ็คเกจ
James Skemp

2
แต่ถ้าคุณมีไลบรารีอื่นที่มีการพึ่งพา jQuery มันจะอยู่ที่นั่นเสมอที่ดีที่สุดคุณสามารถมีสิ่งนี้ควบคู่ไปกับ jQuery 2.0 หากคุณต้องการเพียง jQuery 1.x ที่ขึ้นอยู่กับสิ่งนี้จะไม่ได้ผลและคุณจะต้องดูคำตอบของ Dave R
RockResolve

4

ฉันรวมสองโซลูชันจากด้านบนสำหรับ @TeYoU

ก่อนอื่นฉันติดตั้งแพ็คเกจจากคอนโซลตัวจัดการแพ็คเกจ:

เมนูเครื่องมือ -> ตัวจัดการแพ็คเกจไลบรารี -> คอนโซลตัวจัดการแพ็คเกจ

PM> Install-Package jQuery -Version 1.9.1

จากนั้นฉันแก้ไข package.config ตามที่ @Dave R. พูดว่า:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1,2)" />

จากนั้นฉันอัปเดตเป็นเวอร์ชันปัจจุบันปัจจุบันคือ 1.10.2 โดยใช้ Nuget Manager และทำงานได้อย่างมีเสน่ห์


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