पैकेज.config में सभी संकुल को स्थापित/अद्यतन करने के लिए मैं NuGet कैसे प्राप्त करूं?




(12)

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

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

nuget install packages.config

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

nuget restore YourSolution.sln

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

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

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

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

nuget update YourSolution.sln

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

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

Update-Package

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

Update-Package -Project YourProjectName

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

Update-Package -reinstall

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

Update-Package -reinstall -Project YourProjectName

-reinstall विकल्प पहले अनइंस्टॉल करेगा और फिर पैकेज को फिर से प्रोजेक्ट में इंस्टॉल करेगा।

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

अपडेट:

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

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


Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

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


यदि आप वेबसाइट प्रोजेक्ट्स का उपयोग कर रहे हैं, या 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) }

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

संपादित करें 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) }

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

Update-Package -Reinstall

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

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

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

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

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

और मैंने अभी उपयोग किया है

अद्यतन-पैकेज-पुनर्स्थापित करें - इस आदेश को पैकेज प्रबंधक कंसोल पर चलाएं

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

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

अद्यतन-पैकेज -प्रोजेक्टनाम 'नामऑफप्रोजेक्ट' - पुनर्स्थापित करें - पैकेज प्रबंधक कंसोल पर यह आदेश चलाएं

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

लिए बहुत धन्यवाद।

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


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


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

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

Update-Package -ProjectName 'NAME_OF_THE_PROJECT'

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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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