2014-04-18 17 views
21

को अनदेखा करता है मेरे पास एक विजुअल स्टूडियो 2013 प्रोजेक्ट है जो Nuget का उपयोग करता है। मेरे पास समाधान की मूल निर्देशिका में संकुल.कॉन्फिग फ़ाइल है, जिसे हम स्थापित करना चाहते हैं Nuget संकुल को परिभाषित करना। मेरे पास समाधान की मूल निर्देशिका में nuget.config फ़ाइल भी है, पैकेज स्रोतों को परिभाषित करने के साथ-साथ कुछ पैकेजसोर्स प्रमाण-पत्र भी हैं। पैकेज स्रोतों में से एक हमारी कंपनी के लिए एक निजी रेपो है।विजुअल स्टूडियो 2013 nuget.config

यदि मैं समाधान की उस रूट निर्देशिका में कमांड प्रॉम्प्ट खोलता हूं, और nuget restore टाइप करें तो यह ठीक काम करता है, और हमारे द्वारा उपयोग किए जाने वाले कुछ कस्टम पैकेजों को खींचने के लिए हमारे निजी प्रतिनिधि को मारने में सक्षम है।

लेकिन अगर मैं विजुअल स्टूडियो 2013 में समाधान खोलता हूं, और इसे बनाता हूं, तो यह हमारे कस्टम पैकेज को डाउनलोड करने का प्रयास करते समय विफल रहता है, क्योंकि यह हमारी nuget.config फ़ाइल को अनदेखा कर रहा है, और इस प्रकार हमारे निजी न्यूज रेपो के बारे में नहीं पता ।

मैं उपकरण> विकल्प में जा सकता हूं और हमारे निजी रेपो जोड़ सकता हूं, लेकिन हम समाधान के भीतर सबकुछ करने की कोशिश कर रहे हैं, ताकि यह बिना किसी कस्टम कॉन्फ़िगरेशन के आउट-द-बॉक्स का निर्माण कर सके।

वीएस 2013 द्वारा nuget.config को अनदेखा क्यों किया जा रहा है?

+3

मुझे लगता है कि आप पहले से ही जानते हैं कि Nuget इस क्रम में NuGet.config फ़ाइलों की खोज करता है: 1. .nuget \ nuget.config 2. उस प्रोजेक्ट-फ़ोल्डर से रूट पर रिकर्सिव रूप से चलता है। 3. वैश्विक NuGet.config जो% appdata% \ NuGet \ nuget.config पर होने की उम्मीद है, यह अंतिम रूप से आपकी मशीन-व्यापी (प्रति उपयोगकर्ता) फ़ाइल है, उपयोगकर्ता \ {user-name} \ roaming में, और वह फ़ाइल है जो विजुअल स्टूडियो के भीतर होती है जब आप टूल्स> विकल्प में जाते हैं और अपना निजी रेपो जोड़ते हैं। इस प्रकार, आप इसे PowerShell या जो कुछ भी एक्सेस कर सकते हैं। – JamesWHurst

+0

@JamesWHurst क्या आप कह रहे हैं कि विजुअल स्टूडियो मेरी परियोजना में nuget.config जानकारी का कभी सम्मान नहीं करेगा, और इसके बजाय मुझे वैश्विक nuget.config फ़ाइल को रेपो जोड़ने के लिए PowerShell का उपयोग करने की आवश्यकता है? –

+0

क्या यह काम करता है यदि आप अपने nuget.config को उसी फ़ोल्डर से स्थानांतरित करते हैं जैसे subnolder के समाधान के रूप में .nuget (इस प्रकार। Nuget \ nuget.config)? –

उत्तर

3

मैंने निम्नलिखित निर्देशिका संरचना के साथ एक नई परियोजना बनाई है।

-ConsoleApplication1 
    -ConsoleApplication1 
    -ConsoleApplication1.sln 
    -nuget.config 

nuget.config मैं अपने निजी रेपोस के किसी भी जब समाधान सुविधा के लिए Nuget संकुल प्रबंधित का उपयोग कर नहीं देख सकता था जोड़ने से पहले। जब मैंने nuget.config जोड़ा तो मैं संवाद विंडो में अपने नए प्रतिनिधि को देखने में सक्षम था। मैं भी बहाल nuget उपयोग करते हुए मेरे संकुल बहाल करने में सक्षम हूँ और वी.एस. के भीतर एक निर्माण से 2013

मेरे 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://www.nuget.org/api/v2/" /> 
     <add key="MyRepo" value="http://XX.XX.XXX.XX:81/host/repo" /> 
    </packageSources> 
    <activePackageSource> 
     <add key="All" value="(Aggregate source)" /> 
    </activePackageSource> 
</configuration> 

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

+0

यदि आप अपनी वर्तमान समाधान निर्देशिका "उपरोक्त" हैं तो आप VS 2013 में nuget.config फ़ाइल का प्रबंधन कैसे करेंगे? क्या आप अपनी निर्देशिका संरचना पर विस्तार से बता सकते हैं कि आपकी nuget.config फ़ाइल कहां है, जहां आप .sln और .csproj फ़ाइलें हैं? और आपका समाधान एक्सप्लोरर दृश्य कैसा दिखता है, क्या आप nuget.config फ़ाइल को तब देख सकते हैं? –

+0

यह समझ में नहीं आता है। समाधान निर्देशिका के ऊपर nuget.config को रखने की आवश्यकता क्यों होगी, जहां तर्कसंगत रूप से, यह सभी समाधानों पर लागू होगा। यह सही नहीं हो सकता है ... – crush

+0

मुझे विश्वास है कि यह आपके समाधान से ऊपर रखने के लिए पूरी तरह से समझ में आता है। हमारे पास हमारे ट्रंक की जड़ में हमारी मुख्य समाधान फ़ाइल है और हमारे नियमित NuGet.config वहां है। हालांकि, हमारे पास ट्रंक के तहत एक अलग/देव/UserXxx फ़ोल्डर संरचना भी है जहां हमारे देवताओं के अपने स्वयं के समाधान होते हैं। समस्या यह है कि वे समाधान पैकेज स्थानों का सम्मान नहीं करते हैं। इसके अलावा हमारा समाधान एक पूरी तरह से अलग रेपो से परियोजनाओं का उपयोग करता है जिसमें अपने स्वयं के पैकेज फ़ोल्डर होना चाहिए। हालांकि, NuGet एक समाधान से दो पैकेज स्थानों की अनुमति नहीं देता है इसलिए हमें सबकुछ के लिए एक सामान्य 'पैकेज' स्थान बनाना होगा। – MarqueIV

0

आपके समाधान वेब साइट प्रोजेक्ट या वेब एप्लिकेशन प्रोजेक्ट के तहत है? मुझे लगता है कि वेब साइट प्रोजेक्ट nuget.config फ़ाइल को अनदेखा करता है।

18

NuGet.config को संपादित करने के बाद विजुअल स्टूडियो को पुनरारंभ करें!

मैंने देखा है कि VS2012 NuGet.config में परिवर्तनों को तब तक नहीं उठाता जब तक कि मैं इसे पुनरारंभ नहीं करता।

+0

मेरा मानना ​​है कि यह मेरी 2015 परियोजना में भी मुद्दा था। मैंने सोचा कि मैंने किसी बिंदु पर फिर से शुरू किया था और यह अभी भी पंजीकरण नहीं कर पाया था, लेकिन काम शुरू करने के बाद मैंने कुछ गहन परीक्षण किए और सब कुछ तब तक काम कर रहा था जब तक मैंने वीएस को फिर से शुरू किया। – JoeBrockhaus

1

मैंने पाया कि यदि आपके पास एक बहु-प्रोजेक्ट समाधान है, तो प्रोजेक्ट फ़ोल्डर के तहत फ़ोल्डरों में सभी परियोजनाओं के साथ, एक परियोजना फ़ोल्डर में NuGet.config डालने से काम नहीं होता है। यह निजी पैकेज स्रोत नहीं उठाता है। यह काम करता है यदि आप समाधान फ़ोल्डर में NuGet.config डालते हैं।

है यही कारण है कि, इस नहीं काम:

  • समाधान
    • PROJECTA
      • ProjectA.csproj
    • ProjectB
      • ProjectB.csproj
      • NuGet.config

जबकि इस करता काम:

  • समाधान
    • PROJECTA
      • ProjectA.csproj
    • ProjectB
      • ProjectB.csproj
    • NuGet.config

मैं भी वें पाया disableSourceControlIntegration विकल्प पर \NuGet.config में निर्दिष्ट होने पर कार्य नहीं करता है। यह केवल तब काम करता है जब .nuget\NuGet.config में। तो मेरे पास मेरे समाधान के लिए दो कॉन्फ़िगरेशन फ़ाइलें हैं, एक रूट पर जिसमें पैकेज स्रोत कॉन्फ़िगरेशन है, और .nuget फ़ोल्डर में disableSourceControlIntegration विकल्प वाला एक फ़ोल्डर है।

विजुअल स्टूडियो 2012 अपडेट 5 और NuGet पैकेज प्रबंधक एक्सटेंशन 2.8.5 के साथ परीक्षण किया गया।

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