มีวิธีอัปเดต nuget.exe โดยอัตโนมัติในโฟลเดอร์. nuget เมื่อใช้การคืนค่าแพคเกจหรือไม่


93

ทีมของฉันใช้ตัวเลือก Enable Package Restore มาตั้งแต่ Nuget 1.5 เพื่อไม่ให้แพ็กเกจอยู่ในการควบคุมแหล่งที่มาของเรา เมื่อ Nuget 1.6 เปิดตัวเราสังเกตเห็นปัญหาที่ไม่ได้ดึงแพ็คเกจลงและติดตามลงไปที่ Nuget.exe ในโฟลเดอร์. nuget ซึ่งจำเป็นต้องอัปเดตเป็น 1.6 เพื่อให้ตรงกับ Package Manager

วิธีใดที่ดีที่สุดในการอัปเดตโซลูชันเมื่อ Nuget ได้รับการแก้ไขแล้ว ฉันไม่เห็นวิธีง่ายๆจากสตูดิโอในการบอกว่านักเก็ตเวอร์ชันใดอยู่ในโฟลเดอร์โซลูชัน จนถึงตอนนี้เราระเบิดโฟลเดอร์. nuget และเรียกใช้คำสั่ง Enable Package Restore อีกครั้ง

คำตอบ:


149

ฉันขอแนะนำให้อัปเดต. nuget \ nuget.exe ด้วยคำสั่งนี้จากบรรทัดคำสั่ง:

nuget.exe update -self

[แก้ไข]: ปิด VS Solution ก่อน หากมีการอัปเดตและเปิดโซลูชันแล้ว nuget.exe จะถูกลบออกจากโซลูชัน

คุณสามารถอัปเดต nuget.exe โดยอัตโนมัติเมื่อคืนค่าโดยแก้ไข. nuget \ nuget.targets เพื่อเพิ่มคำสั่งด้านบน ฉันจะดูคำสั่ง restore ในนั้นเป็นตัวอย่าง แต่ฉันไม่แน่ใจว่ามันคุ้มค่าหรือไม่การอัปเดต nuget.exe ไม่ใช่เรื่องธรรมดาและความเข้ากันได้แบบย้อนหลังน่าจะไม่ค่อยดีนัก


ฉันลองใช้กับหนึ่งในโครงการของฉัน อัปเดต NuGet.exe แล้ว แต่ดูเหมือนว่าจะลบออกจากโซลูชันของฉัน ฉันรู้ว่าฉันสามารถเพิ่มกลับเข้าไปได้ แต่มันดูแปลก ๆ
Rick

ใช่ฉันลองอัปเดตจริงในครั้งนี้และ nuget.exe ก็ถูกลบออกจากโซลูชัน VS สำหรับฉันเช่นกัน (ฉันไม่เข้าใจก่อนหน้านี้เนื่องจาก nuget.exe เป็นเวอร์ชันล่าสุด) เกิดขึ้นเนื่องจากในระหว่างการอัปเดต nuget.exe ปัจจุบันถูกย้ายไปที่ nuget.exe.old ก่อนดังนั้นการอ้างอิงไฟล์จึงเสียหาย ฉันสงสัยว่าสิ่งนี้จะได้รับการแก้ไขฉันจะเรียกใช้คำสั่งโดยปิดโซลูชัน
Alexandre Dion

ดูเหมือนว่าการอัปเดตตัวเองจะไม่ทำให้คุณมีไฟล์ NuGet.targets ใหม่ซึ่งอาจเป็นปัญหา ฉันคิดว่าทีม NuGet ได้ทำการเปลี่ยนแปลงบางอย่างกับไฟล์เป้าหมายระหว่างเวอร์ชัน 1.6 และ 1.7
William Gross

@William Gross ดีคุณสามารถตรวจสอบได้ว่ามีการอัปเดตสำหรับnuget.org/packages/NuGet.Build หรือไม่ (นั่นคือแพ็คเกจที่มี nuget.targets)
Alexandre Dion

ได้ผลสำหรับฉันอย่าลืมเรียกใช้ cmd ในฐานะผู้ดูแลระบบ
โมฮัมหมัด

31

ฉันพบวิธีที่ดีที่สุดในการจัดการสิ่งนี้คือเพียงแค่ลบโฟลเดอร์. nuget และเปิดใช้งานการกู้คืนแพ็คเกจแบบกว้างอีกครั้ง ดังที่ได้กล่าวไว้ข้างต้นคุณสามารถเพิ่มคำสั่งการอัปเดตด้วยตนเองในบิลด์ของคุณได้ แต่จะไม่อัปเดตเป้าหมายหรือไฟล์กำหนดค่าหากมีการเปลี่ยนแปลงระหว่างเวอร์ชัน (หรือลบการอ้างอิงออกจากโซลูชันของคุณ) บางทีมันอาจจะไม่ใช่เรื่องใหญ่ แต่นี่เป็นวิธีที่แน่นอนเพื่อให้แน่ใจว่าคุณมี exe และไฟล์กำหนดค่าล่าสุด และในตอนท้ายของวันการอัปเดตเป็นเพียงปัญหาหากคุณต้องการเข้าถึงคำสั่งใหม่หรือในที่สุดก็มีการเปลี่ยนแปลงอย่างสิ้นเชิงในรุ่นใหม่


3
1 - ฉันได้พบว่านี่เป็นวิธีที่ดีที่สุดที่จะได้รับการปรับปรุงNuGet.exe เช่นเดียวกับNuGet.targetsไฟล์ (ซึ่งเป็นสิ่งที่สำคัญ) เพียงตรวจสอบให้แน่ใจว่าคุณได้บันทึกการปรับแต่งใด ๆ ที่คุณได้ทำไว้กับNuGet.targetsไฟล์ (เช่น PackageSources ที่กำหนดเอง) เพื่อให้คุณสามารถนำไปใช้ใหม่กับไฟล์ใหม่ได้
Jesse Webb

ดีที่ได้ผลสำหรับฉันอย่างมีเสน่ห์ !! ขอบคุณสำหรับข้อมูล
Gayan

-3

ดูโพสต์ของ David Ebbo ที่บล็อกของเขา

โดยพื้นฐานแล้วสิ่งที่คุณต้องทำคือสร้างไฟล์ NuGet.Config ถัดจากไฟล์. sln ของคุณซึ่งประกอบด้วย:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear/>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" />
  </packageSources>
</configuration>

1
คำถามจะถามวิธีอัปเดต nuget.exe เป็นเวอร์ชันล่าสุดโดยอัตโนมัติเมื่อใช้การคืนค่าแพ็คเกจ โพสต์บล็อกของ David Ebbo อธิบายวิธีการกู้คืนแพ็คเกจโดยใช้ nuget.exe เท่านั้น
Frith

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