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




(10)

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


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

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

Update-Package -ProjectName 'NAME_OF_THE_PROJECT'

अब विजुअल स्टूडियो 2012 में नुजेट पैकेज मैनेजर कंसोल आपको स्वचालित रूप से "पुनर्स्थापित" बटन देता है जैसे ही यह कोई पैकेज इंस्टॉल नहीं होता है लेकिन वहां पैकेज.config में होता है। बहुत बढ़िया फ़ीचर!


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

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

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

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

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

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

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

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

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

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

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


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


मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन सोचा कि यह उपयोगी हो सकता है। यदि आपको अद्यतन प्रक्रिया के दौरान विशिष्ट संकुलों को अनदेखा करने की आवश्यकता है (जैसे किसी भी संकुल जो जावास्क्रिप्ट संदर्भ अपडेट करते हैं), निम्न 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) }

मेरा मानना ​​है कि आपको सबसे पहले जो करना है वह पैकेज पुनर्स्थापना सुविधा को सक्षम बनाता है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 पैकेज पुनर्स्थापना को सक्षम नहीं करना चाहते हैं तो यहां एक और समाधान है।

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

# 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) }

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

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

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


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

PM> Install-Package NuGetPowerTools
PM> Enable-PackageRestore

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

अद्यतन करें:

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

समाधान एक्सप्लोरर में समाधान नोड पर राइट क्लिक करें और NuGet पैकेज पुनर्स्थापना सक्षम करें का चयन करें।

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