2011-03-24 11 views
134

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

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

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

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

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

किसी भी मामले में, कितने packages.config फाइलें मेरे पास होनी चाहिए?

उत्तर

213

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

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

... या:

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

और यदि आप स्थापित पैकेज क्षेत्र में जाते हैं तो आप समाधान में प्रत्येक प्रोजेक्ट में एक ही पैकेज को 'प्रबंधित' कर सकते हैं।

+5

उत्तर पर इसे चिह्नित करने के लिए अपडेट किया गया क्योंकि यह अब सही समाधान है। –

+2

@EricJ। कोई समस्या नहीं, शर्म की बात है StackOverflow अन्य लोगों को पुराने प्रश्न के स्वीकृत उत्तर को बदलने नहीं देता है। –

+5

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

8

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

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

+4

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

12

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

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

70

आप कई परियोजनाओं

Tools > Library Package Manager > Package Manager Console 

लक्षित करने के लिए कंसोल का उपयोग कर सकते हैं तो यह आदेश का उपयोग

Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME 
उदाहरण के लिए

Get-Project Core,UI | Install-Package FluentDateTime 
+3

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

17

यह मिठाई सौदा मेरे लिए काम करता है:

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 $ _। नाम -फिल्टर न्यूटॉन्सॉफ्ट.जेसन} ' –

+1

@EdwardMMeshuris बहुत अच्छा आदेश है लेकिन इसे पैकेज नाम के लिए सटीक मिलान नहीं मिलेगा। यहां सटीक मिलान 'गेट-प्रोजेक्ट -all |' के लिए थोड़ा अपडेट किया गया है ForEach-Object {Get-Package -ProjectName $ _। नाम -फिल्टर PACKAGE_NAME} | कहां ऑब्जेक्ट {$ _। id -eq 'PACKAGE_NAME'} ' –

0

पैकेज प्रबंधक कंसोल आप निम्नलिखित आदेश लिख सकते हैं: स्थापित करने या भी अपडेट के लिए (अद्यतन-पैकेज)

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

आपको लगता है कि आदेश का उपयोग कर सकते हैं

संबंधित मुद्दे