2016-03-03 11 views
7

मेरे काम में एक निजी NuGet repo है। मैं इसे और nuget.org से संकुल स्थापित करने में सक्षम हूं। जब मैं निजी repo पर संग्रहीत एक पैकेज है, तो मैं समस्याओं में भाग रहा हूं जिसमें nuget.org पर होस्ट किए गए पैकेज पर निर्भरता है।एकाधिक स्रोतों पर निर्भरताओं के साथ NuGet पैकेज स्थापित करना

उदाहरण के लिए, मेरा निजी रेपो एक पैकेज होस्ट करता है, पी 1। पी 1 की पी 2 पर निर्भरता है जो nuget.org पर होस्ट की जाती है। यदि स्रोत के रूप में मेरे निजी रेपो सेट के साथ "इंस्टॉल-पैकेज पी 1" करें, तो मुझे एक त्रुटि मिलेगी कि यह निर्भरता P2 नहीं मिल सका। यह समझ में आता है क्योंकि यह निजी रिपो में पी 2 की तलाश में है लेकिन यह nuget.org पर होस्ट किया गया है। अभी तक कामकाज nuget.org से पी 2 स्थापित कर रहा है और फिर निजी रिपो से पी 1 स्थापित कर रहा है। हालांकि यह तकनीकी रूप से काम करता है और यह कठिन टीम के लिए NuGet बेचने के लिए मुश्किल है।

क्या वैसे भी मैं एकाधिक स्रोतों के साथ इंस्टॉल-पैकेज चला सकता हूं? मैंने -सोर्स पैरामीटर में एक सूची उत्तीर्ण करने का प्रयास किया है लेकिन अब तक

NuGet.config दृश्य स्टूडियो द्वारा प्रबंधित किया जा रहा है, इसलिए मैं इसमें किए गए किसी भी बदलाव को हर बार एक nuget कमांड चलाने के लिए मिटा दिया जा रहा है दृश्य स्टूडियो। मैंने समाधान स्तर पर एक अतिरिक्त nuget.config फ़ाइल जोड़ने का प्रयास किया लेकिन जहां तक ​​मैं कह सकता हूं कि इसे अनदेखा किया जा रहा था। मैं स्थापित = पैकेज आदेश के कई visitations की कोशिश की है लेकिन वे आम तौर कुछ इस तरह दिखाई:

Install-Package P1 -Source https://api.nuget.org/v3/index.json,http://privatefeed.com 

संदर्भ के लिए यहाँ NuGet.config फ़ाइल है, लेकिन इसे बदलने व्यर्थ लगता है।

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageRestore> 
    <add key="enabled" value="True" /> 
    <add key="automatic" value="True" /> 
    </packageRestore> 
    <packageSources> 
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> 
    <add key="Private Nuget" value="http://privatefeed.com" /> 
    </packageSources> 
    <disabledPackageSources> 
    <add key="Microsoft and .NET" value="true" /> 
    </disabledPackageSources> 
    <activePackageSource> 
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" /> 
    </activePackageSource> 
</configuration> 
+0

आप हमें आदेश पंक्ति आप उपयोग कर रहे हैं दिखा सकते हैं? और आपके nuget.config में क्या है – Petrik

+0

निश्चित बात, ऊपर दिए गए संपादन देखें। –

+0

जोड़ों के लिए धन्यवाद। मैंने अभी अपनी मशीन पर इसका परीक्षण किया है और यह ठीक काम करता है। मैं अपने स्थानीय फ़ीड (मेरी मशीन पर) से एक पैकेज ले सकता हूं और निर्भरता nuget.org से आती है। तो अगला प्रश्न होगा यदि आप nuget.exe (कमांड लाइन संस्करण) चलाते हैं तो क्या होता है। जैसे nuget.exe p1 स्थापित करें और देखें कि यह सभी संकुल को पकड़ लेता है या नहीं। आपके पास न्यूजेट और वीएस के कौन से संस्करण हैं? – Petrik

उत्तर

1

NuGet.exe का उपयोग करना, आप एक से अधिक पैकेज सूत्रों निर्दिष्ट करने के लिए -Source विकल्प दोहरा सकते हैं।

उदाहरण:

nuget install P1 -Source https://api.nuget.org/v3/index.json -Source http://privatefeed.com 

ऐसा लगता है कि यह पैकेज का उपयोग कर कई स्रोतों कंसोल (PowerShell) प्रबंधित निर्दिष्ट करने के लिए असंभव है। हालांकि, अगर -Source निर्दिष्ट नहीं है तो एक NuGet.Config फ़ाइल का उपयोग किया जाता है। कॉन्फ़िगरेशन फ़ाइल में एकाधिक पैकेज स्रोत हो सकते हैं और फ़ाइल को स्वयं टीम के साथ साझा किया जा सकता है।

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> 
    <add key="Private Nuget" value="http://privatefeed.com" /> 
    </packageSources> 
</configuration> 

अपने समाधान के समान निर्देशिका में NuGet.Config के रूप में सहेजें और इसे संस्करण नियंत्रण में जोड़ें।

ध्यान दें कि कॉन्फ़िगरेशन परिवर्तनों के प्रभावी होने के लिए आपको दृश्य स्टूडियो को फिर से लोड करना पड़ सकता है।

अब आप -Source को कॉन्फ़िगर किए बिना संकुल इंस्टॉल कर सकते हैं।

उदाहरण:

Install-Package P1 
संबंधित मुद्दे