कई परियोजनाओं के साथ समाधान के लिए NuGet


153

मान लीजिए मेरे पास 3 परियोजनाओं के साथ एक समाधान है:

  • कोर
  • यूआई
  • टेस्ट

मेरे द्वारा उपयोग किए जाने वाले कुछ NuGet पैकेज सभी 3 परियोजनाओं पर लागू होंगे। कुछ बस यूआई और टेस्ट पर लागू होंगे, और कुछ बस टेस्ट (एनयूएनआईटी) पर लागू होंगे।

NuGet का उपयोग करके इसे सेट करने का सही तरीका क्या है ?

  1. क्या मुझे किसी भी संदर्भ में किसी भी समय सभी तीन परियोजनाओं पर "लाइब्रेरी जोड़ें संदर्भ" का उपयोग करना चाहिए?
  2. क्या मुझे पहली बार पैकेज की आवश्यकता होने पर "लाइब्रेरी पैकेज संदर्भ जोड़ें" का उपयोग करना चाहिए, और फिर संदर्भ जोड़ें-> बाद के उपयोगों के लिए ब्राउज़ करें?

किसी भी स्थिति में, मेरे पास कितनी पैकेज.कॉन्फ़िग फाइलें होनी चाहिए?

जवाबों:


239

किसी को भी इस पार ठोकर खाने के लिए, अब निम्नलिखित विकल्प है:

अपने समाधान पर राइट-क्लिक करें> समाधान के लिए NuGet पैकेज प्रबंधित करें ...

... या:

उपकरण> लाइब्रेरी पैकेज मैनेजर> समाधान के लिए NuGet पैकेज प्रबंधित करें ...

और अगर आप इंस्टॉल किए गए संकुल क्षेत्र में जाते हैं, तो आप समाधान में प्रत्येक परियोजना के दौरान एक पैकेज को 'प्रबंधित' कर सकते हैं।


5
क्या होगा अगर मैं विशिष्ट संस्करण के साथ समाधान के लिए पैकेज स्थापित करना चाहता हूं। विज़ार्ड मुझे वह विकल्प नहीं देता है। कंसोल में मैं इसे वैसे ही चला सकता हूं, Install-Package RazorEngine -Version 3.3.0लेकिन यह केवल उस प्रोजेक्ट के लिए लागू किया जाएगा जो कंसोल ड्रॉपडाउन में चुना गया है।
MaciejLisCK

क्या यह दृश्य स्टूडियो 2010 में समर्थित है। मैंने यहां एक सवाल पूछा है - stackoverflow.com/questions/33163987/…
user2645830

यदि आपके पास एक गंभीर रूप से बड़ी परियोजना है, तो क्या आप वास्तव में निर्भरता को अद्यतन करने के लिए पैकेज प्रबंधक पर भरोसा करेंगे?
मिक

क्या आपके पास कोई विचार है जब कुछ विशिष्ट पैकेज के लिए "प्रबंधित करें" बटन नहीं है? System.ServiceModel की तरह, मैं इस लाइब्रेरी को समाधान दृश्य से प्रबंधित नहीं कर सकता।
लोंग

@ क्लिक करें, उल्लिखित संवाद पर समेकित टैब देखें ... मैं करूँगा!

76

कई परियोजनाओं को लक्षित करने के लिए कंसोल का उपयोग करें

Tools > Library Package Manager > Package Manager Console

फिर इस कमांड का उपयोग करें

Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME

उदाहरण के लिए

Get-Project Core,UI | Install-Package FluentDateTime

4
+1: कम से कम वर्तमान NuGet संस्करण के साथ, मैं अभी भी "समाधान के लिए NuGet पैकेज प्रबंधित करें" संवाद पर इस पद्धति को पसंद करता हूं, क्योंकि हमारा समाधान वास्तव में बड़ा है, और मैं उस संवाद में प्रोजेक्ट नामों की सूची पेस्ट नहीं कर सकता।
योदान ताबेर

21

यह मिठाई मेरे लिए काम करती है:

PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
    $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
    | ForEach-Object {Install-Package MvvmLight -project $_.Name}

2
यह कैसे किया जाता है! उदाहरण के लिए यदि आप समाधान में अपनी सभी परियोजनाओं के लिए json.net के सभी संस्करणों को सूचीबद्ध करना चाहते हैं, तो यह प्रयास करें:Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -Filter Newtonsoft.Json}
jonypony3

1
@EdwardMMeshuris बहुत अच्छी कमांड है लेकिन इसे पैकेज के नाम का सटीक मिलान नहीं मिलेगा। यहां सटीक मैच के लिए थोड़ा अपडेट किया गया हैGet-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' }
Dark_Knight

12

यदि आप कई समाधानों में एक पैकेज स्थापित करना चाहते हैं तो मैंने इसे करने के लिए एक आसान पॉवर्सशेल स्क्रिप्ट लिखी, यहां देखें ।

आप Get-Project -Allकमांड को फ़िल्टर भी कर सकते हैं और प्रोजेक्ट सूची के उप-सेट को लक्षित कर सकते हैं ।


8

आपको अपने समाधान में प्रत्येक प्रोजेक्ट पर अपने सभी बाहरी लाइब्रेरी के लिए "लाइब्रेरी जोड़ें संदर्भ" का उपयोग करना चाहिए। आप प्रति प्रोजेक्ट एक package.config के साथ समाप्त करेंगे।

हालाँकि, आप पैकेज को केवल एक बार डाउनलोड करेंगे और अपने सभी अन्य प्रोजेक्ट्स के लिए स्थानीय रूप से पुनः उपयोग करेंगे।


4
नोट: यदि आप सभी लाइब्रेरी पैकेज को अपडेट नहीं करते हैं, तो आप एक ही असेंबली के 3 अलग-अलग संस्करणों के साथ समाप्त हो जाएंगे। .NET GAC में या अलग-अलग नामों के साथ 3 अलग-अलग संस्करणों के साथ काम कर सकता है। लेकिन क्योंकि उनके पास एक ही नाम होगा। आप गैर-वाणिज्यिक बिल्ड के साथ समाप्त हो जाएंगे क्योंकि पुराने संस्करण को नए संस्करण में कॉपी किया गया था।
graffic

2

में पैकेज प्रबंधक कंसोल आप निम्नलिखित लिख सकते हैं आदेश :

Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter 
PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package 
PACKAGE_NAME -Version VERSION

आप उस कमांड का उपयोग इंस्टॉल या अपडेट के लिए भी कर सकते हैं (अपडेट-पैकेज)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.