संकुल में सभी पैकेजों को स्थापित / अद्यतन करने के लिए मुझे NuGet कैसे मिलता है।


674

मेरे पास इसमें कई परियोजनाओं के साथ एक समाधान है। तीसरे पक्ष के अधिकांश संदर्भ गायब हैं, फिर भी packages.configप्रत्येक परियोजना के लिए फाइल हैं । मुझे सभी पैकेजों को स्थापित / अद्यतन करने के लिए NuGet कैसे मिलेगा? क्या यह प्रत्येक परियोजना के लिए कमांड लाइन के माध्यम से किया जाना चाहिए?


10
कृपया स्वीकार किए गए उत्तर को बदलने पर विचार करें, क्योंकि NuGet अब Visual Studio में बहुत अधिक एकीकृत है और इस समस्या को हल करने के आसान तरीके हैं।
skolima

2
नवीनतम NuGet 2.5 रिलीज के साथ अब पैकेज मैनेजर में "अपडेट ऑल" बटन है: docs.nuget.org/docs/release-notes/…
Erik Schierboom

@ErikSchierboom धन्यवाद! इस थ्रेड को अपडेट किया जाना चाहिए क्योंकि यह अब उपलब्ध है
कार्ल कासर

संबंधित परियोजना: chocolatey.org
जयन

1
VS2013 में, खोजकर्ताओं के लाभ के लिए, आप समाधान पर क्लिक कर सकते हैं और 'सक्षम करें एनगेट पैकेज रिस्टोर' चुनें। फिर निर्माण।
हॉकी J

जवाबों:


870

आप अपने पैकेजों को पुनर्स्थापित करने के लिए या NuGet 2.7 या इसके बाद के संस्करण के साथ nuget

NuGet.exe के लिए आप प्रत्येक प्रोजेक्ट के लिए निम्न कमांड चला सकते हैं।

nuget install packages.config

या NuGet 2.7 के साथ आप कमांड लाइन का उपयोग करके समाधान में सभी पैकेजों को पुनर्स्थापित कर सकते हैं

nuget restore YourSolution.sln

ये दोनों पैकेज को नीचे खींच देंगे। हालांकि इस आदेश को चलाते समय आपकी परियोजना की फाइलों को संशोधित नहीं किया जाएगा, इसलिए परियोजना में पहले से ही NuGet संकुल का संदर्भ होना चाहिए। अगर ऐसा नहीं है तो आप पैकेजों को स्थापित करने के लिए विजुअल स्टूडियो का उपयोग कर सकते हैं।

जब आप अपने समाधान का निर्माण करते हैं तो NuGet.exe का उपयोग करने की कोई आवश्यकता नहीं होती है, NuGet 2.7 और इसके बाद के संस्करण के साथ, Visual Studio स्वचालित रूप से अनुपलब्ध NuGet संकुल को पुनर्स्थापित करेगा।

अपने समाधान में सभी पैकेजों को अपडेट करने के लिए, पहले उन्हें पुनर्स्थापित करें, और फिर आप पैकेजों को अपडेट करने के लिए या तो NuGet.exe का उपयोग कर सकते हैं या विजुअल स्टूडियो के भीतर से आप पैकेज मैनेजर कंसोल विंडो से पैकेजों को अपडेट कर सकते हैं, या अंत में आप मैनेज का उपयोग कर सकते हैं। संकुल संवाद।

कमांड लाइन से आप nuget.org से उपलब्ध नवीनतम संस्करण के समाधान में पैकेज अपडेट कर सकते हैं।

nuget update YourSolution.sln

ध्यान दें कि यह किसी भी NuGet पैकेज में कोई PowerShell स्क्रिप्ट नहीं चलेगा।

विजुअल स्टूडियो के भीतर से आप पैकेज अपडेट करने के लिए पैकेज मैनेजर कंसोल का उपयोग कर सकते हैं । इसका यह लाभ है कि किसी भी PowerShell स्क्रिप्ट को अद्यतन के भाग के रूप में चलाया जाएगा जहाँ NuGet.exe का उपयोग करके उन्हें नहीं चलाया जाएगा। निम्न आदेश प्रत्येक परियोजना के सभी पैकेजों को nuget.org से उपलब्ध नवीनतम संस्करण में अद्यतन करेगा।

Update-Package

आप इसे एक परियोजना में भी सीमित कर सकते हैं।

Update-Package -Project YourProjectName

यदि आप संकुल को उन्हीं संस्करणों में पुनः स्थापित करना चाहते हैं जो पहले स्थापित थे तो आप कमांड के -reinstallसाथ तर्क का उपयोग कर सकते हैं Update-Package

Update-Package -reinstall

आप इसे एक परियोजना में भी सीमित कर सकते हैं।

Update-Package -reinstall -Project YourProjectName

-reinstallविकल्प पहले की स्थापना रद्द करें और फिर एक परियोजना में वापस फिर से पैकेज स्थापित हो जाएगा।

या, आप Manage Packagesसंवाद का उपयोग करके संकुल को अपडेट कर सकते हैं ।

अपडेट:

  • 2013/07/10 - NuGet 2.7 में नगेट पुनर्स्थापना के बारे में जानकारी के साथ अद्यतन किया गया
  • 2014/07/06 - विजुअल स्टूडियो में स्वचालित पैकेज रिस्टोर के बारे में जानकारी के साथ अपडेट किया गया और NuGet में अन्य परिवर्तनों के साथ उत्तर की तारीख तक लाया गया।
  • 2014/11/21 - के बारे में जानकारी के साथ अद्यतन-reinstall

15
क्या ऐसा करने के लिए Visual Studio के भीतर कुछ सरल कमांड है? मेरे पास ऑटो-रिस्टोर है जो समाधान के लिए सक्षम है, लेकिन "बिल्ड" अभी भी मुझे बहुत सारी त्रुटि देता है क्योंकि अनुपलब्ध संदर्भ (संकुल को संकुल से बहाल नहीं किया गया है ।config)।
बोरक बर्नार्ड

1
मुझे लगता है कि NuGet Power Tools - github.com/davidfowl/NuGetPowerTools जैसी कोई चीज़ स्थापित किए बिना ऐसा नहीं लगता । हालाँकि यह अनिवार्य रूप से वही कार्य करेगा जो आपके पास पहले से मौजूद ऑटो-रिस्टोर में है।
मैट वार्ड

2
यह सामान्य रूप से पैकेज स्थापित करने के लिए भी काम करता है, न केवल उन्हें "पुनर्स्थापित" करने के लिए (आईएस इंस्टॉलेशन को बहाल करने के रूप में कोई बड़ा तकनीकी अंतर नहीं है, लेकिन यह उन लोगों तक सीमित नहीं है जो समाधान पैकेज पुनर्स्थापना सुविधा का उपयोग करना चाहते हैं)। हालाँकि, आपको इस उद्देश्य के लिए एक पर्यावरण चर EnableNuGetPackageRestore सेट करने की आवश्यकता है। मैंने इसे "nuget install package.config" को कॉल करने से पहले अपने psake स्क्रिप्ट में सेट किया है: $ env: EnableNuGetPackageRestore = "true"। यह पीएस प्रक्रिया के लिए संस्करण निर्धारित करता है और मशीन-वाइड वेरिएबल्स (और संभवतः अन्य बिल्ड) को प्रभावित किए बिना यह प्रक्रिया करता है।
गलाकटोर

पुनर्स्थापित करना स्थापित करने के समान नहीं है। कमांड लाइन से एक पैकेज स्थापित करने से आपकी परियोजना नहीं बदलेगी, इसलिए विधानसभा संदर्भ जैसी चीजें नहीं जोड़ी जाएंगी।
मैट वार्ड

3
मैंने एक घंटे में कम से कम एक समाधान की खोज की होगी और अंत में यह वास्तव में होगाUpdate-Package -reinstall -Project ProjectName
विज

529

वर्तमान समाधान के सभी परियोजनाओं में सभी संकुल को पुनः स्थापित करें:

Update-Package -Reinstall

मौजूदा समाधान के विशिष्ट परियोजना में सभी पैकेजों को पुनर्स्थापित करें ( अनारित और ashes999 के लिए धन्यवाद ):

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

60
मुझे लगता है कि यह वास्तव में ओपी चाहता था, और अन्य सभी समाधानों की तुलना में आसान है ...
जामिन्टो

4
अगर आप को अभी अभी काम करने की जरूरत है तो यह nuke विकल्प है।
क्रिस

11
यदि आपने अभी-अभी अपना लक्ष्य ढांचा या इसी तरह का बदलाव किया है तो यह भी एक सही विकल्प है। मुझे 25 विषम परियोजनाओं को अपडेट करने की संभावना का सामना करना पड़ रहा था, जिसमें उनके आसपास फैले नगेट पैकेजों का भार था और जो मैं चाहता था, उसके लिए पहला कमांड एकदम सही था। और न तो overkill अर्थ में भी nuke।
क्रिस

7
यह इस प्रश्न का उत्तर होना चाहिए, स्वीकृत उत्तर काम करता है लेकिन यह विशेष रूप से प्रश्न का उत्तर देता है। +1 वही होना चाहिए जिसकी आवश्यकता थी।
क्रिस्टन सम्मान

10
तुम भी जोड़ने के लिए चाहते हो सकता है -IgnoreDependencies स्विच। मैं एक अद्यतन-पैकेज विफल किया है क्योंकि संकुल मैं अपने packages.config में निर्दिष्ट की तुलना में एक नए संस्करण में ही अस्तित्व में इस्तेमाल में से एक की निर्भरता
मैथियास Falkenberg

167

विजुअल स्टूडियो के भीतर से ऐसा करने का एक और, नया और तेज तरीका है। की जाँच करें इस पोस्ट डेविड Ebbo से, और टिप्पणी अनुभाग का संदर्भ यदि आप मुसीबत में पड़। मूल रूप से, आप पैकेज मैनेजर प्रॉम्प्ट में निम्नलिखित कार्य करते हैं:

PM> Install-Package NuGetPowerTools
PM> Enable-PackageRestore

बाद में, जब आप अपने समाधान का निर्माण करते हैं तो पैकेज स्वचालित रूप से स्थापित हो जाएंगे यदि वे गायब हैं।

अपडेट करें:

इस कार्यक्षमता को दृश्य स्टूडियो एकीकरण के साथ Nuget 1.6 में बनाया गया है ताकि आपको NuGetPowerTools या कमांड टाइप करने की आवश्यकता न पड़े। तुमको बस यह करना है

सॉल्यूशन एक्सप्लोरर में सॉल्यूशन नोड पर राइट क्लिक करें और Enable NuGet Package Restore का चयन करें।

अधिक जानकारी के लिए इस लेख को पढ़ें ।


6
यहां अपडेट किया गया उत्तर अधिकांश लोगों के लिए सबसे अच्छा समाधान होने जा रहा है क्योंकि उनके पास nuget.exe नहीं होगा (लेकिन विजुअल्स स्टूडियो में स्थापित किया जाएगा)।
टॉड थॉमसन

1
लेकिन पैकेज बहाल वास्तव में आप के लिए nuget.exe डाउनलोड करता है
Konstantin

4
मैंने बस यही किया। और यह अभी भी निर्माण विफल कह रहा है कि संदर्भ गायब हैं। बिल्ड का कहना है कि सभी पैकेज पहले से ही इंस्टॉल हैं। मैं प्रश्न में समाधान / संकुल फ़ोल्डर को हटा दिया गया (पैकेज) को हटा दिया और इसे डाउनलोड किया और काम करना शुरू कर दिया।
मास्लो

3
@ इस तरह से अब एक समाधान के पक्ष में पदावनत किया गया है जो आपकी सभी परियोजना फाइलों को संशोधित नहीं करता है।
मफिन मैन

20

यदि आप वेबसाइट परियोजनाओं का उपयोग कर रहे हैं, या NuGet पैकेज को पुनर्स्थापित करने में सक्षम नहीं करना चाहते हैं, तो यहां एक और समाधान है।

आप संकुल प्रबंधक कंसोल का उपयोग पैकेज के सभी पैकेजों को भरने के लिए कर सकते हैं। फाइल को फिर से संस्थापित करें और उन्हें पुनः स्थापित करें।

# read the packages.config file into an XML object
[xml]$packages = gc packages.config

# install each package 
$packages.packages.package | % { Install-Package -id $($_.id) -Version $($_.version) }

4
मैंने ऊपर दिए गए प्रत्येक उत्तर की कोशिश की और उन्हें मेरे एक समाधान पर काम करने के लिए नहीं मिला। लेकिन इस एक का एक बदलाव किया। $packages.packages.package | % { Update-Package -reinstall -id $($_.id) }
19

1
यदि आप एक ही csproj पर कई समाधानों का उपयोग करते हैं तो nuget पैकेज रिस्टोर एक बुरा सपना है ... मैं इस उत्तर की सराहना करता हूं!
felickz

1
यह मेरी समस्या को ठीक नहीं किया, लेकिन यह मुझे यकीन है कि बेहतर महसूस किया है!
डेविल्स एडवोकेट

यह उत्कृष्ट है, और एक नए प्रोजेक्ट के लिए पैकेजों को स्थानांतरित करने का एक तरीका प्रदान करता है: [xml] $ package = gc c: \ PathToExisting \ package.config #followed द्वारा प्रत्येक पैकेज $ package.packages.package स्थापित करें। % {इंस्टॉल-पैकेज -id $ ($ _। Id) -Version $ ($ _। संस्करण)}
reckface

1
@PerryJ आप बस टाइप कर सकते थे Update-Package -Reinstall
BrainSlugs83

16
Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

यह सबसे अच्छा और सबसे आसान उदाहरण है जो मैंने पाया। यह उन सभी नगेट्स को फिर से इंस्टॉल करेगा जो पैकेज.कॉन्फिग में सूचीबद्ध हैं और यह वर्तमान संस्करणों को संरक्षित करेगा। YourProjectNameGoesHereप्रोजेक्ट नाम के साथ बदलें ।


मुझे इसके साथ कुछ समस्याएँ थीं क्योंकि मेरे पैकेज। कॉन्फिग में विशिष्ट संस्करणों के साथ दो पैकेजों के संदर्भ थे, लेकिन एक पैकेज दूसरे पर निर्भर था जिसमें कोई विशिष्ट संस्करण नहीं था। जब मैंने अपडेट चलाया, तो उसने पहले सभी पैकेजों को अनइंस्टॉल कर दिया और फिर रिइंस्टॉल करने में असफल रहा क्योंकि निर्भरता का एक नया संस्करण 'पहले से संदर्भित' था। निष्कासन ने ठीक काम किया था, लेकिन अब मेरा पैकेज.कॉन्फिग खाली था। मुझे पूर्ण नियंत्रण का प्रयास करने से पहले संकुल नियंत्रण को वापस करना पड़ा। स्रोत नियंत्रण से हटकर और परस्पर विरोधी पैकेज को अद्यतन करने के लिए ...
मैथियास फाल्कनबर्ग

11

नवीनतम NuGet 2.5 रिलीज़ के साथ अब पैकेज मैनेजर में "अपडेट ऑल" बटन है: http://docs.nuget.org/docs/release-notes/nuget-2.5#Update_All_button-to_allow_updating_all_packages_at_once


2
इसके अलावा, पैकेज मैनेजर कंसोल से आप अपने प्रोजेक्ट के सभी पैकेजों को करने के लिए "अपडेट-पैकेज" चला सकते हैं: nuget.codeplex.com/wikipage?title=Updating%20All%20Packages
kmp

7

मैं दृश्य स्टूडियो 2015 का उपयोग कर रहा हूं और ऊपर दिए गए समाधान मेरे काम नहीं आए, इसलिए मैंने निम्नलिखित काम किए:

मेरे समाधान से संकुल फ़ोल्डर को हटा दें और समाधान में हर परियोजना से बिन और obj फ़ोल्डर्स को भी हटा दें और इसे फिर से बनाएँ।

शायद आपके पास अगली त्रुटि होगी:

nuget.exe का पता लगाने में असमर्थ

इसे हल करने के लिए: इस लाइन को अपनी NuGet.targets फ़ाइल में बदलें और इसे सही पर सेट करें:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

संदर्भ: https://stackoverflow.com/a/30918648 और https://stackoverflow.com/a/20502049


4

यदि आप Nuget 2.8 इंस्टॉल करते हैं, तो चेकबॉक्स जांचें

Tools >> Nuget Manager >> Package Manager Settings >> Automatically check for missing packages during build

दृश्य स्टूडियो में। यदि यह जांचा गया है, तो बस परियोजना को फिर से बनाएं आपके सभी संदर्भ पुस्तकालयों को पुनर्स्थापित करेगा।


विजुअल स्टूडियो के UI से सबसे सुविधाजनक विकल्प। आपको Allow NuGet to download missing packagesचेकबॉक्स को भी जांचना होगा ।
RBT

4

3 घंटे की खोज और जांच के बाद।

मुझे इसकी समस्या थी क्योंकि हमारे पास टीम में दो सदस्य हैं (GitHub स्रोत नियंत्रण का उपयोग करके), क्योंकि हमने दूरस्थ रिपॉजिटरी में भेजने के लिए पैकेज के लिए फ़ाइलों को प्रतिबंधित नहीं किया था, टीम के सदस्यों में से एक को सर्वर पर पैकेज भेजे गए थे और मैंने उन परिवर्तनों को खींच लिया है मेरे स्थानीय।

उसके बाद मुझे पीओ के रूप में एक ही समस्या थी, मैं अपने एपीआई प्रोजेक्ट को सर्वर पर प्रकाशित करने में सक्षम नहीं था।

पर और मैं अभी इस्तेमाल किया है

Update-Package -Reinstall - इस कमांड को पैकेज मैनेजर कंसोल पर चलाएं

यह कमांड आपके सभी पैकेजों को फिर से स्थापित करेगा जो आपने अपने समाधान में उपयोग किए हैं। (हर परियोजना के लिए)

वर्तमान समाधान के सभी परियोजनाओं में सभी संकुल को पुनः स्थापित करें:

Update-Package -ProjectName 'NameOfProject' -Reinstall - इस कमांड को पैकेज मैनेजर कंसोल पर चलाएँ

यह कमांड आपके सभी पैकेजों को फिर से स्थापित करेगा जो उस परियोजना के संबंध में हैं जो आपने "-ProjectName" के बाद निर्दिष्ट किया था। और मुझे लगता है कि यह बेहतर है क्योंकि मैंने समाधान के सभी पैकेजों को पुनर्स्थापित करने के लिए आधे घंटे तक इंतजार किया था।

इसके लिए रोडोल्फ ब्रॉक को बहुत धन्यवाद ।

इसके अलावा, मैं आपको सलाह दूंगा कि जब आप "रीस्टोर पैकेज" बटन दबाने के लिए रिमोट सर्वर से परिवर्तन खींचते हैं, जो विज़ुअल स्टूडियो द्वारा दिखाया जाएगा।


3

मेरा मानना ​​है कि पहली चीज जो आपको करने की आवश्यकता है वह पैकेज पुनर्स्थापना सुविधा को सक्षम करना है । यह भी देखें यहाँ । यह समाधान (परियोजना नहीं) स्तर पर किया जाता है।

लेकिन यह आपको पूरे रास्ते नहीं मिलेगा - मैं पुनर्स्थापना सुविधा को सक्षम करने के बाद एक समान मुद्दे में भाग गया। (VS2013, NuGet 2.8।)

यह पता चला कि मैंने (अनजाने में) परियोजना को प्रतिबद्ध करते समय पैकेज को स्रोत नियंत्रण के लिए प्रतिबद्ध किया था - लेकिन विजुअल स्टूडियो (और स्रोत नियंत्रण प्लगइन) ने चेक-इन करते समय बायनेरिज़ की मदद की उपेक्षा की थी।

समस्या तब पैदा हुई जब मैंने एक रिलीज़ शाखा बनाई। देव / मुख्य / ट्रंक शाखा की मेरी स्थानीय प्रतिलिपि में बायनेरिज़ थे, क्योंकि मैंने मूल रूप से संकुल को डाउनलोड / डाउनलोड किया था।
हालाँकि, नई रिलीज़ शाखा में,

  • पैकेज फोल्डर और .nupkgफाइलें सभी वहाँ थीं - इसलिए नूगेट ने नहीं सोचा था कि कुछ भी बहाल करना है;
  • लेकिन उसी समय, DLL में से कोई भी मौजूद नहीं था - यानी तीसरे पक्ष के संदर्भ गायब थे - इसलिए मैं निर्माण नहीं कर सका।

मैंने $(SolutionDir)/packages(रिलीज़ ब्रांच के तहत) सभी पैकेज फ़ोल्डरों को हटा दिया और फिर एक पूर्ण पुनर्निर्माण किया, और इस बार बिल्ड सफल रहा।
... और फिर निश्चित रूप से मैं वापस गया और स्रोत नियंत्रण (ट्रंक और रिलीज शाखा में) से पैकेज फ़ोल्डर हटा दिया। मैं स्पष्ट (अभी तक) नहीं हूँ कि क्या repositories.configफ़ाइल को भी हटा दिया जाना चाहिए।

प्रोजेक्ट टेम्पलेट्स द्वारा आपके लिए स्थापित कई घटक - कम से कम वेब परियोजनाओं के लिए - नुगेट पैकेज हैं। यही है, यह समस्या आपके द्वारा जोड़े गए पैकेजों तक सीमित नहीं है।
इसलिए प्रोजेक्ट / समाधान बनाने के तुरंत बाद पैकेज को पुनर्स्थापित करें, और इससे पहले कि आप एक प्रारंभिक चेक-इन करें, packagesफ़ोल्डर को साफ़ करें (और सुनिश्चित करें कि आप .nugetफ़ोल्डर को स्रोत नियंत्रण के लिए प्रतिबद्ध करते हैं )।

डिस्क्लेमर: मैंने एसओ पर यहां एक और उत्तर देखा, जिसमें संकेत दिया packagesगया था कि फ़ोल्डर को साफ़ करना रिज़ॉल्यूशन का हिस्सा था। इसने मुझे सही रास्ते पर ला दिया, इसलिए मैं लेखक को श्रेय देना चाहता हूं, लेकिन मैं अब उस प्रश्न / उत्तर का पता नहीं लगा सकता। अगर मैं इसे ठोकर मारता हूँ तो एक संपादन पोस्ट करूँगा।

मैं यह भी नोट Update-Package -reinstallकरूंगा कि / .slnऔर फाइलों को संशोधित किया जाएगा । कम से कम मेरे मामले में ऐसा ही हुआ। कौन सा IMHO इस विकल्प को बहुत कम आकर्षक बनाता है।.csproj.vbproj


मेरे पास यह एक ही मुद्दा था और जब आप कहते हैं कि स्थानीय पैकेजों को हटाने के लिए आवश्यक सभी को अपग्रेड करने और संकुल को पुनः स्थापित करने में एक लंबा समय बिताया है।
थॉमस बॉबी

3

मैंने कोशिश की Update-Package -reinstallलेकिन यह एक पैकेज पर विफल रहता है और मेरे समाधान में परियोजनाओं के सभी शेष पैकेजों को संसाधित करना बंद कर देता है।

मैंने अपनी स्क्रिप्ट के साथ समाप्त किया, जो सभी पैकेज.कॉन्फ़िग फ़ाइलों की गणना करती है और Update-Package -Reinstall -ProjectName prj -Id pkgप्रत्येक प्रोजेक्ट / पैकेज के लिए चलती है ।

आशा है कि यह किसी के लिए उपयोगी हो सकता है:

$files = Get-ChildItem -Recurse -Include packages.config;

[array]$projectPackages = @();
$files | foreach { [xml]$packageFile = gc $_; $projectName = $_.Directory.Name; $packageFile.packages.package.id | foreach { $projectPackages += @( ,@( $projectName, $_ ) ) } }

$projectPackages | foreach { Update-Package -Reinstall -ProjectName $_[0] -Id $_[1] }

संपादित करें: यह एक त्रुटि है जो मेरे पास थी: अपडेट-पैकेज: पैकेज 'EntityFramework.BulkInsert-ef6' खोजने में असमर्थ। इंस्टॉल या अपडेट करने से पहले मौजूदा पैकेज को पुनर्स्थापित करना होगा। मैनुअल रन Update-Package -Reinstall -ProjectName my_prj -Id EntityFramework.BulkInsert-ef6 बहुत अच्छी तरह से काम किया।


2
धन्यवाद। मैं खुशी से रो रहा हूँ
क्लीफ़ेथिस

मैं खुशी के साथ रो रहा हूँ! हाँ!! क्या समय बचा है एक FYI के रूप में यदि आप सर्गेई की स्क्रिप्ट में अंतिम पंक्ति के बजाय इस लाइन का उपयोग करते हैं, तो यह निर्भरता स्थापित नहीं करेगा। बस एक सीधा ReInstall: $ projectPackages | foreach {अपडेट-पैकेज -IgnoreD dependencies -Reinstall -ProjectName $ _ [0] -Id $ _ [1]}
ElMatador

2

बिल्ड सर्वर गिरने के कारण यहां आने वालों के लिए, आप nuget पुनर्स्थापना कमांड को चलाने के लिए MSBuild लक्ष्य बनाकर निष्पादन कमांड चला सकते हैं , जैसा कि नीचे है (इस मामले में nuget.exe .nuget फ़ोल्डर में है, बजाय पथ), जो तब समाधान के निर्माण से तुरंत पहले टीमकिट बिल्ड चरण में चलाया जा सकता है

<Target Name="BeforeBuild">
  <Exec Command="..\.nuget\nuget restore ..\MySolution.sln"/>
</Target>

1

अब Visual Studio 2012 में Nuget Package Manager कंसोल आपको स्वचालित रूप से एक "रिस्टोर" बटन देता है, क्योंकि यह किसी भी पैकेज को स्थापित नहीं करता है, बल्कि पैकेज में होता है ।config। बहुत बढ़िया फ़ीचर!


2
यह दृश्य स्टूडियो 2010 के लिए भी सच है
पाउलोहो

1

VS2012 V11 पर, यदि मैं लाइन के अंत में "-Reinstall" का उपयोग करता हूं तो यह काम नहीं करता है।

तो मैं बस इस्तेमाल किया:

Update-Package -ProjectName 'NAME_OF_THE_PROJECT'

1

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन यह उपयोगी हो सकता है। यदि आपको अपडेट प्रक्रिया के दौरान विशिष्ट पैकेजों को अनदेखा करने की आवश्यकता है (जैसे कि किसी भी पैकेज जो जावास्क्रिप्ट संदर्भों को अपडेट करते हैं), निम्न पावरस्क्रिप स्क्रिप्ट का उपयोग करें (सुनिश्चित करें कि आपका पैकेज स्रोत पैकेज मैनेजर कंसोल में "सभी" पर सेट है):

EDIT 2014-09-25 10:55 पूर्वाह्न ईएसटी - स्क्रिप्ट में एक बग फिक्स्ड

$packagePath = "packages.config"
$projectName = "MyProjectName"

$packagesToIgnore = @(
    "bootstrap",
    "jQuery",
    "jquery-globalize",
    "jquery.mobile",
    "jQuery.jqGrid",
    "jQuery.UI.Combined",
    "jQuery.Validation",
    "Microsoft.jQuery.Unobtrusive.Validation",
    "Modernizr",
    "Moment.js"
)

[xml]$packageFile = gc $packagePath
$packagesToProcess = $packageFile.packages.package | Where-Object {$packagesToIgnore -notcontains $_.id}

$packagesToProcess | % { Update-Package -reinstall -projectname $projectName -id $($_.id) }

1

न जाने कब से, लेकिन VS2019 में आप इसे आसान तरीके से कर सकते हैं:

  1. समाधान एक्सप्लोरर में राइट क्लिक समाधान
  2. समाधान के लिए Nuget संकुल प्रबंधित करें चुनें
  3. 4 टैब हैं, ब्राउज़ करें, इंस्टॉल किए गए, अपडेट, समेकित करें
  4. समेकित दिखाता है कि क्या संकुल के विभिन्न संस्करण का उपयोग करके कोई परियोजना है (और ज्यादातर मामलों में, इसीलिए हम सभी संकुल को अद्यतन करना चाहते हैं)
  5. अपडेट दिखाता है कि क्या कोई प्रोजेक्ट में कोई अपडेट उपलब्ध है। सभी का चयन करें और अपडेट पर क्लिक करें, काम हो जाएगा।

0

विज़ुअल स्टूडियो 2017 में - जब आप आईडीई का उपयोग करते हुए संकलन करते हैं - यह सभी लापता नगेट पैकेज डाउनलोड करेगा और फ़ोल्डर "पैकेज" में बचाएगा।

लेकिन निर्माण मशीन संकलन पर msbuild.exe का उपयोग करके किया गया था। उस स्थिति में, मैंने nuget.exe डाउनलोड किया।

Msbuild.exe निष्पादित करने से पहले प्रत्येक बिल्ड प्रक्रिया के दौरान। यह निष्पादित करेगा -> nuget.exe NAME_OF_SLN_File को पुनर्स्थापित करें (यदि केवल .SLN फ़ाइल है तो आप उस पैरामीटर को अनदेखा कर सकते हैं)।


मैंने पाया कि आप MSBuild -t का उपयोग कर सकते हैं: ऐसा करने के लिए कमांड लाइन पर SLN पर पुनर्स्थापित करें। MSbuild -t:restore Xxxx.sln
माइक केली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.