मैं स्थानीय रूप से NuGet पैकेज .nupkg फ़ाइल कैसे स्थापित करूँ?


जवाबों:


463

मेनू उपकरणविकल्पपैकेज प्रबंधक

यहां छवि विवरण दर्ज करें

एक नाम और फ़ोल्डर स्थान दें। ओके पर क्लिक करें। उस फ़ोल्डर में अपने NuGet पैकेज फ़ाइलों को छोड़ दें।

अपने प्रोजेक्ट पर जाएं, राइट क्लिक करें और "न्यूगेट पैकेज प्रबंधित करें " चुनें और अपने नए पैकेज स्रोत का चयन करें।

यहां छवि विवरण दर्ज करें

यहाँ प्रलेखन है


22
दरअसल, मैंने स्टेप 1 कई बार किया है। लेकिन मेरा पैकेज चरण 2 में दिखाई नहीं दे रहा है, जब मैं इंस्टॉल किए गए पैकेज, अपडेट या हाल के पैकेज को देखने के लिए खुलता हूं।
टॉम

2
मेरी स्क्रीन पर, मेरे पास "इंस्टाल्ड पैकेज" के तहत केवल "ऑल" है, न कि "न्यूगेट ऑफिशियल पैकेज सोर्स", न कि मेरा कस्टम "न्यूनेट", वे गायब हैं।
टॉम

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

2
निर्धारित समस्या। मैंने विंडोज़ - कंट्रोल पैनल से नगेट की स्थापना रद्द की। यह उस तरह से काम नहीं किया। मुझे वीएस शुरू करने और टूल्स-> एक्सटेंशन मैनेजर में जाने की जरूरत थी ... फिर वहां से अनइंस्टॉल की स्थापना रद्द करें। फिर से शुरू किया गया वी.एस. फिर से नगेट स्थापित करने के लिए चला गया, यह काम किया। अब, स्थानीय nupkg फाइलें दिखाई दे रही हैं, भी (संपादित करें: वे ऑनलाइन टैब में हैं, इंस्टाल्ड टैब नहीं, चित्र I पोस्ट में मेरी गलती है)। मदद के लिए धन्यवाद :)
टॉम

1
मेरे पास अभी तक टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है - लेकिन VS2015 के बारे में स्वीकृत उत्तर टिप्पणियों में माइकल को जवाब देने के लिए अभी भी ऑनलाइन जाना चाहते हैं। मेरे पास एक ही मुद्दा था, लेकिन विकल्पों में, यदि आप ऑफ़लाइन लोगों के लिए काम करने वाले सभी ऑनलाइन स्रोतों को अनटिक करते हैं। नगेट विकल्प तस्वीर
मिक एम

302

आप पैकेज प्रबंधक कंसोल का भी उपयोग कर सकते हैं और Install-Packageउस निर्देशिका में पथ निर्दिष्ट करके cmdlet को आमंत्रित कर सकते हैं जिसमें -Sourceपैरामीटर में पैकेज फ़ाइल है :

Install-Package SomePackage -Source C:\PathToThePackageDir\

2
क्या मैं कमांड लाइन टूल के साथ भी ऐसा कुछ कर सकता हूं?
पौल के सोरेनसेन

5
हाँ। -Sourceविकल्प में उपलब्ध है nuget.exe रूप में अच्छी तरह। उदाहरण के लिए:nuget install SomePackage -Source C:\PathToThePackageDir
एनरिको कैंपिडोग्लियो

16
आपको -IncludePrerelease ध्वज को भी निर्दिष्ट करने की आवश्यकता हो सकती है। अन्यथा, यदि पैकेज संस्करण में डैश-प्रत्यय (जैसे "-beta1") है, तो इंस्टॉल-पैकेज उसे नहीं मिलेगा।
जेफ शार्प

9
यह स्वीकृत की तुलना में बहुत अधिक प्रत्यक्ष उत्तर है। जानकारी के लिए धन्यवाद!
डेविड पीटर्स

2
वीएस 2017 के लिए काम नहीं करता है, देखें f.ex. उत्तर @Granger द्वारा।
RenniePet

124

.Nupkg फ़ाइलों के लिए मुझे उपयोग करना पसंद है:

Install-Package C:\Path\To\Some\File.nupkg

7
केवल एक चीज जो काम की है। यदि निर्देशिका के पथ में रिक्त स्थान हैं, तो इसे दोहरे उद्धरण चिह्नों में शामिल करें।
निकोस

4
इस बात से सहमत। और यह ध्यान देने योग्य है कि केवल पूर्ण पथ काम करते हैं
सेबस्टियन जे।

5
वीएस 2017 के लिए काम नहीं करता है, देखें f.ex. उत्तर @Granger द्वारा।
RenniePet

1
@ RenniePet ने मेरे लिए VS2017 में काम किया (लेकिन मैंने पहले .nupkgसे ही एक ही डायरेक्टरी के तहत अपना हर दूसरे पैकेज जमा कर रखा था)
राफेलन

1
यह मेरे लिए काम नहीं कर रहा है, मैं VS2013 संस्करण 12.0.21..5 और नुगेट पैकेज मैनेजर का उपयोग कर रहा हूं 2.12.0.817 :(
नीरज त्रिवेदी

56

विजुअल स्टूडियो 2017 और इसके नए .csproj प्रारूप के लिए

अब आप किसी स्थानीय फ़ाइल को इंगित करने के लिए केवल Install-Package का उपयोग नहीं कर सकते। (यह संभावना है क्योंकि PackageReferenceतत्व फ़ाइल पथों का समर्थन नहीं करता है; यह केवल आपको पैकेज की आईडी निर्दिष्ट करने की अनुमति देता है।)

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

स्थानीय नुगेट एक रिश्तेदार पथ का उपयोग कर संकुल

यह एक पैकेज स्रोत जोड़ देगा जो केवल एक विशिष्ट समाधान पर लागू होता है, और आप सापेक्ष पथ का उपयोग कर सकते हैं।

आपको nuget.configअपनी .slnफ़ाइल के समान निर्देशिका में एक फ़ाइल बनाने की आवश्यकता है । फ़ाइल को उस पैकेज स्रोत से कॉन्फ़िगर करें जिसे आप चाहते हैं। जब आप अगली बार Visual Studio 2017 में समाधान खोलें, तो उन स्रोत फ़ोल्डरों से कोई .nupkg फ़ाइलें उपलब्ध होंगी। (आप पैकेज मैनेजर में सूचीबद्ध स्रोत (ओं) को देखेंगे, और जब आप किसी प्रोजेक्ट के लिए प्रबंधन कर रहे हैं, तो आपको "ब्राउज" टैब पर पैकेज मिलेंगे।)

nuget.configआपको आरंभ करने के लिए एक उदाहरण यहां दिया गया है:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="MyLocalSharedSource" value="..\..\..\some\folder" />
    </packageSources>
</configuration>

पृष्ठभूमि की कहानी

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


मैं वीएस 2017 का उपयोग कर रहा हूं और इस समस्या में नहीं चला हूं। मैंने सिर्फ -Sourceतर्क पारित Update-Packageकिया और यह ठीक काम किया। शायद कुछ विशेष रूप से Install-Packageकमांड के साथ करने के लिए ?
ग्रेग बरगार्ड

48
  1. अपने समाधान के आगे LocalPackages नामक एक फ़ोल्डर में फ़ाइलों को जोड़ें (इसे कहा जाना नहीं है, लेकिन तदनुसार निम्न चरण में xml समायोजित करें)
  2. अपनी सामग्री फ़ाइल के बगल में NuGet.config नामक एक फ़ाइल बनाएँ, जिसमें निम्न सामग्री हो

    <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <add key="LocalPackages" value="./LocalPackages" />
        </packageSources>
        <activePackageSource>
          <!-- this tells that all of them are active -->
          <add key="All" value="(Aggregate source)" />
        </activePackageSource>
     </configuration>
  3. यदि दृश्य स्टूडियो में समाधान खुला है, तो इसे बंद करें, फिर इसे फिर से खोलें।

अब आपके पैकेज ब्राउज़र में दिखाई देने चाहिए, या इंस्टॉल-पैकेज का उपयोग करके इंस्टॉल करने योग्य होना चाहिए


शानदार जवाब, बिल्कुल वही उपाय जिसकी मुझे तलाश थी। धन्यवाद!
जोनाथन

1
यह सिर्फ इसलिए हो सकता है क्योंकि मेरे पास Nuget रिपॉजिटरी में एक ही नाम के साथ एक पैकेज है, लेकिन मुझे Install-Package चलाने से पहले पैकेज मैनेजर कंसोल का उपयोग करने और स्थानीय स्रोत के रूप में पैकेज स्रोत का चयन करने की आवश्यकता है।
ल्यूक

42

यदि आपके पास .nupkg फ़ाइल है और आपको केवल .dll फ़ाइल की आवश्यकता है तो आपको केवल .zip के एक्सटेंशन को बदलना होगा और कार्यकारी निर्देशिका ढूंढनी होगी।


3
यदि आप इसे एक ज़िप फ़ाइल के रूप में मानते हैं, तो फ़ाइल नाम में स्थान रखने वाली फ़ाइलों को% (रिक्त स्थान की जगह) के साथ निकाला जाएगा। इससे बचने के लिए NuGet का उपयोग करके इंस्टॉल करें।
रहतुर

2
वास्तव में, आपको एक्सटेंशन का नाम बदलने की भी आवश्यकता नहीं है। बस फ़ाइल को राइट-क्लिक करें, और उसके बाद Open with चुनें, और एक एप्लिकेशन खोजें जो .zip फ़ाइल को खोल सके, और .nupkg फ़ाइल को खोला जा सके, और तब आप अपने नामित फ़ोल्डर में आवश्यक dll फ़ाइल को निकाल सकते हैं।
19

1
सबसे अच्छा समाधान मुझे चाहिए
लियो गुयेन

8

बस एक अपडेट देने के लिए, विजुअल स्टूडियो 2015 उपयोगकर्ताओं के लिए मामूली बदलाव हैं।

मैन्युअल रूप से पैकेज का उपयोग या स्थापित करने के लिए, टूल्स -> विकल्प -> NuGet Package Manager -> पैकेज स्रोत पर जाएं

जोड़ें बटन पर क्लिक करें, स्रोत चुनें, और " अपडेट " पर क्लिक करना न भूलें क्योंकि यह आपके पैकेज के लिए फ़ोल्डर स्थान को अपडेट करेगा, यदि आप चाहते हैं तो अपने पैकेज स्रोत का वांछित नाम संपादित करें:

यहां छवि विवरण दर्ज करें

आपके जोड़ा पैकेज चुनने के लिए, सही अपने समाधान क्लिक करें और " Nuget संकुल प्रबंधित "

ड्रॉप डाउन सूची दाईं ओर है और अपने संकुल को ब्राउज़ करने के लिए ब्राउज़ करें चुनें जिसे आपने अपने फ़ोल्डर स्रोत पर निर्दिष्ट किया था। यदि उस फ़ोल्डर स्रोत पर कोई नगेट पैकेज नहीं है, तो यह खाली हो जाएगा:

यहां छवि विवरण दर्ज करें


6

लिनक्स पर, NuGet CLI के साथ, कमांड समान हैं। My.nupkg स्थापित करने के लिए, रन करें

nuget add -Source some/directory my.nupkg

फिर dotnet restoreउस निर्देशिका से चलाएँ

dotnet restore --source some/directory Project.sln

या उस निर्देशिका को न्यूगेट स्रोत के रूप में जोड़ें

nuget sources Add -Name MySource -Source some/directory

और फिर msbuildउस निर्देशिका का उपयोग /p:RestoreAdditionalSources=MySourceया उसके साथ करने के लिए कहें /p:RestoreSources=MySource। दूसरा स्विच अन्य सभी स्रोतों को अक्षम कर देगा, जो उदाहरण के लिए ऑफ़लाइन परिदृश्यों के लिए अच्छा है।


1
मैक पर (मैं लिनक्स के रूप में अच्छी तरह से ग्रहण कर रहा हूं), आप इस बग के कारण (या वीएस मैक ) nuget sourcesका उपयोग करने पर भरोसा नहीं कर सकते । मुझे स्थानीय स्रोत को मैन्युअल रूप से जोड़ना था (यह जीएच मुद्दा देखें )। dotnet restore~/.nuget/NuGet/NuGet.Config
gabe
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.