2011-09-22 13 views
5

हमने NuGet.Server पैकेज का उपयोग करके कुछ स्थानीय पैकेज रिपॉजिटरीज़ सफलतापूर्वक स्थापित किए हैं और उन्हें स्थानीय आईआईएस वेबसर्वर पर होस्ट किया है। हम पैकेज प्रबंधक से कनेक्ट करने और कोई समस्या स्थापित करने में सक्षम हैं। तो ये ठीक काम कर रहे हैं।NuGet.exe कमांड टूल लाइन संकुल के लिए कहां कॉन्फ़िगर करें

हमारे पैकेज फ़ोल्डर में जांच न करने के लिए हमने प्रत्येक प्रोजेक्ट फ़ाइल में निम्न कमांड लाइन शामिल की है जिसमें NuGet संदर्भ शामिल हैं। यह काम करता है, यदि NuGet.exe सीआई बिल्ड एजेंट पर पथ में है।

हालांकि, मैं स्रोत विन्यास हर परियोजना फ़ाइल में कमांड लाइन फार्म ले जाएँ और सिर्फ एक स्थान पर रखें, खासकर जहां अन्य परेशान डेवलपर्स इसे बदल नहीं सकते हैं चाहते हैं;)

<Target Name="BeforeBuild"> 
    <Exec Command="nuget install $(ProjectDir)packages.config -s 
     http://domain:80/DataServices/Packages.svc/; 
     http://domain:81/DataServices/Packages.svc/ 
     -o $(SolutionDir)packages" /> 
</Target> 

है वहाँ एक बेहतर तरीका है?

उत्तर

5

मैं अंत में NuGetPowerTools मिला http://blog.davidebbo.com

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

मैं निम्नलिखित समाधान के साथ आया था।

  1. देव और निरंतर एकीकरण मशीनों पर, अपने स्थानीय ड्राइव पर किसी फ़ोल्डर में NuGet.exe को सहेजें। मैं सी चुना है: \ उपकरण \ nuget \
  2. सभी वातावरण
  3. निरंतर एकीकरण मशीनों पर में पथ पर्यावरण चर है कि filepath जोड़ें,% APPDATA% \ NuGet \ NuGet.Config खोजने के लिए और दर्ज करें निम्नलिखित

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
    <packageSources> 
        <add key="LocalRepositoryName" value="http://Domain/DataServices/Packages.svc/" /> 
    </packageSources> 
    

    आप packageSources को एक से अधिक प्रविष्टियां जोड़ सकते हैं और NuGet उन्हें क्रम में खोज करेंगे कि वे मेरे प्रश्न से निर्माण कोड के बाद

  4. दिखाई टयन अब निम्नलिखित में संशोधित किया जा सकता है।

    <Target Name="BeforeBuild"> 
        <Exec Command="nuget install $(ProjectDir)packages.config 
        -o $(SolutionDir)packages" /> 
    </Target> 
    

इस के अंतिम परिणाम है कि जब भी मंजूरी दे दी भंडार स्थान बदल गया है, config केवल एक ही स्थान पर बजाय हर csproj फ़ाइल में परिवर्तित करने की है। साथ ही, यह निरंतर एकीकरण सर्वर प्रशासक है जो उस स्थान को निर्धारित करता है, डेवलपर्स को उनके कमांड लाइन कॉल में नहीं।

+0

यह न्यूज पावर टूल्स का उपयोग करने के लिए अधिक ओवरकिल जैसा दिखता है। यदि आप इसका इस्तेमाल करते हैं तो आप वही लाभ प्राप्त कर सकते हैं और जहां यह nuget.exe की तलाश में बदलता है .. – davidfowl

+1

यदि PowerPools वास्तव में पैकेज में जाने और संपादित करने के बिना काम करता है तो मुझे इस समाधान के साथ नहीं आना पड़ेगा, जो कि गलत फ़ाइल एन्कोडिंग के साथ सहेजी गई फाइल थी। आप आधिकारिक फ़ीड के लिए एक अवांछित पैकेज की जांच कर रहे हैं और शायद कई अन्य लोगों को एक अच्छा आधा दिन। यह मेरे ग्राहक को बहुत सारा पैसा खर्च करता है। –

+0

मैंने देखा है कि बहुत से लोग उस बग के बारे में शिकायत करते हैं लेकिन मैंने वास्तव में इसे स्वयं पुन: उत्पन्न नहीं किया है। क्षमा करें आपको उस के माध्यम से जाना होगा। उम्मीद है कि यह जल्द ही तय हो जाएगा। – davidfowl

13

हां वहाँ है ;-) NuGetPowerTools पर एक नज़र डालें। इंस्टॉल-पैकेज NuGetPowerTools चलाने के बाद, यह आपके $ (SolutionDir) में nuget.exe, nuget msbuild लक्ष्य और सेटिंग्स (जिसे आपको चेक इन करने की आवश्यकता होगी) में एक .nuget फ़ोल्डर जोड़ता है।

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

इस तरह, आप प्रत्येक प्रोजेक्ट के बजाय, अपने समाधान के लिए केंद्र में nuget msbuild सेटिंग्स फ़ाइल (.nuget फ़ोल्डर में) में nuget पैकेज स्रोतों का प्रबंधन करते हैं। हालांकि NuGetPowerTools मेरी समस्या हल

चीयर्स, जेवियर

+0

बिल्कुल जो मैं कहने जा रहा था। जब आप Ctrl + Shift + B – ferventcoder

+0

दबाते हैं तो यह दृश्य दृश्य स्टूडियो से भी काम करता है मैंने कोशिश की और यह त्रुटि मिली। https://github.com/davidfowl/NuGetPowerTools/issues/8 स्थापित करने के लिए NuGetPowerTools नहीं मिल सकता है। तो एक और तरीका की जरूरत है। मुझे लगता है कि मैं PowerTools पैकेज के माध्यम से trawl सकता है और मैन्युअल रूप से चरणों को फिर से बनाना। –

+0

किसी ने डेविड एबो के पोस्ट पर जवाब दिया: मैंने आयात-मॉड्यूल cmdlet के लिए वर्बोज़ लॉगिंग चालू कर दी और पता चला कि NuGetPowerTools.psm1 अपमानजनक फ़ाइल थी। यूटीएफ -8 एन्कोडिंग में फ़ाइल को फिर से सहेजना (जो खाली है) समस्या को हल करता है। –

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