.Nuget फ़ोल्डर को संस्करण नियंत्रण में जोड़ा जाना चाहिए?


107

नूगेट के नए संस्करणों के साथ नूगेट पैकेज को स्वचालित रूप से पुनर्स्थापित करने के लिए एक परियोजना को कॉन्फ़िगर करना संभव है ताकि packagesफ़ोल्डर को स्रोत कोड रिपॉजिटरी में शामिल करने की आवश्यकता न हो। अच्छा।

हालाँकि, यह आदेश एक नया .nugetफ़ोल्डर जोड़ता है और वहाँ एक बाइनरी है, NuGet.exe। इसे विजुअल स्टूडियो द्वारा स्वचालित रूप से फिर से बनाया जा सकता है और इसलिए इसे उस संस्करण नियंत्रण में जोड़ना सही नहीं लगता है। हालाँकि, इस फ़ोल्डर के बिना Visual Studio समाधान को ठीक से लोड भी नहीं करेगा।

आप लोग इससे कैसे निपटते हैं? स्रोत नियंत्रण में .nuget जोड़ें? समाधान खोलने से पहले कुछ कमांड लाइन स्क्रिप्ट चलाएँ?


यह सबसे प्रामाणिक लिंक docs.nuget.org/docs/workflows/… है और चूंकि यह एक पुराना धागा है। मैं केवल टिप्पणी में जानकारी साझा करना चाहूंगा ...
नावेद बट

जवाबों:


47

यह पोस्ट पुरानी है, आपको समाधान स्तर का उपयोग नहीं करना चाहिए NuGet पैकेज अब पुनर्स्थापित करें। संस्करण 2.7+ के अनुसार निर्माण पर पैकेजों को स्वचालित रूप से पुनर्स्थापित करने के लिए NuGet सेटअप में एक विकल्प है। तो .nuget फ़ोल्डर को हटाया जा सकता है और आपकी परियोजनाओं से हटाया गया विकल्प।

http://docs.nuget.org/docs/reference/package-restore

अपडेट करें: NuGet 4.x और .NET मानक 2.0 के विमोचन के साथ, जब आप नए csproj प्रारूप का उपयोग करते हैं तो आप संकुल संदर्भों का उपयोग कर सकते हैं, विडंबना यह है कि संकुल को पुनर्स्थापित करने के लिए msbuild पर निर्भरता को फिर से प्रस्तुत किया जा रहा है, लेकिन अब संकुल msbuild का प्रथम श्रेणी का नागरिक है । ऊपर दिया गया लिंक भी इसका उल्लेख करता है PackageReference, लेकिन निम्नलिखित घोषणा इसे बेहतर बताती है:

https://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html

और NuGet 4.x RTM घोषणा, जो विडंबना के रूप में उपयोगी नहीं है:

https://blog.nuget.org/20170308/Announcing-NuGet-4.0-RTM.html

अद्यतन 2: स्पष्ट रूप से VS2017 के साथ आप क्लासिक csproj परियोजनाओं के साथ पैकेज संदर्भों का भी उपयोग कर सकते हैं, लेकिन वे अब पीछे संगत नहीं हैं, और पैकेज उप-निर्भरता को पुनर्स्थापित करने के साथ कुछ समस्याएं हैं। मुझे यकीन है कि सभी हल हो जाएंगे।



@ कैड ब्लोके, हां जो नीचे पढ़ने की सूची में है, इसे नीचे की ओर संकीर्ण करने के लिए धन्यवाद।
जेरेमी

आप वीएस का उपयोग करके आसानी से नुगेट को अपडेट कर सकते हैं Tools > Extensions & Updates > Updates
jocull

47

@ रीचर्ड सजले का जवाब सही है - आपको nuget.exe करने की आवश्यकता नहीं है। यदि कुछ कारणों से Visual Studio स्वचालित रूप से nuget.exe डाउनलोड नहीं करता है, तो सुनिश्चित करें कि आपके पास फ़ाइल में सही करने के लिए निम्नलिखित सेट है nuget.targets:

<!-- Download NuGet.exe if it does not already exist --> 
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

वीएस समाधान बंद करें, इसे फिर से खोलें और इसका निर्माण करें। Visual Studio को अब स्वचालित रूप से nuget.exe डाउनलोड करना चाहिए।


वैसे, किसी को पता है कि यह trueडिफ़ॉल्ट रूप से सेट क्यों नहीं है ?
अंजुकेन

2
यह एक गोपनीयता की चिंता का विषय है। "इंटरनेट पर अनुरोध करने का सरल कार्य उपयोगकर्ता के बारे में जानकारी प्रकट कर सकता है (उदाहरण के लिए, उपयोगकर्ता के आईपी पते से, हम उसके स्थान को अनुमानित कर सकते हैं)।" नौगेट ब्लॉग पर पैकेज रिस्टोर और सहमति लेख
गण

1
FYI करें: जब NuGet.exe .nuget फ़ोल्डर में मौजूद नहीं है, तो सॉल्यूशन के संदर्भ मेनू में "NuGet Package Restore को सक्षम करें" दिखाई देगा, भले ही NuGet पैकेज रिस्टोर पहले से कॉन्फ़िगर हो। एक निर्माण के बाद विकल्प खत्म हो जाएगा।
कॉमकेम

यह स्वीकृत उत्तर होना चाहिए, IMO ... यदि NuGet.exe सुपर छोटा था, तो मैं कहूंगा कि इसे स्रोत नियंत्रण में चिपका दें और आपको अपनी अनदेखी फ़ाइल में जो कुछ भी करना है उससे निपटें। लेकिन यह 1.5 megs है, यह मेरे लिए हमेशा इतना ही है कि मैं हमेशा इसे गण के तरीके से करूँ।
ब्रायन मैकके

यह nuget.exe फॉर्म कहाँ से डाउनलोड करता है? अगर मेरे बिल्डरों के पास कोई इंटरनेट नहीं है तो क्या होगा?
bitbonk


20

आपको करने की जरूरत है .nuget\nuget.targets, लेकिन नहीं nuget.exe। अगर यह मौजूद नहीं है लक्ष्य exe डाउनलोड, लंबे समय के रूप के रूप में आप बदलना DownloadNuGetExeकरने के लिए truenuget.targets में


4

हालाँकि, मैं आमतौर पर exe के स्रोत नियंत्रण को जोड़ने के विचार को पसंद नहीं करता, मैं सुझाव दूंगा कि स्रोत नियंत्रण में कुछ भी होना चाहिए जो परियोजना को खोलने, बनाने और निष्पादित करने के लिए आवश्यक है।

इस मामले में ऐसा लगता है कि .nuget फ़ोल्डर एक आवश्यक निर्भरता है। इसलिए इसे स्रोत नियंत्रण में होना चाहिए।

एकमात्र प्रश्न बचा है, जिसे आपको अनुसंधान करने की आवश्यकता है, यह है कि कैसे NuGet प्रतिक्रिया करने जा रहा है यदि उस फ़ोल्डर को केवल-पढ़ने के लिए चिह्नित किया गया है, जो कि टीएफएस एक बार जांचने के बाद करेगा।


अद्यतन: मैंने इस पर थोड़ा और शोध किया है क्योंकि मैंने पहले कभी भी NuGet का उपयोग नहीं किया है। http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html

मेरा सुझाव है कि शायद आप जो करना चाहते हैं, वह नूगेट को एक आवश्यकता है जिसे हर डेवलपर्स वर्कस्टेशन पर स्थापित किया जाना है।

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

इसके अलावा कि मैं कहूंगा कि आप उनसे सीधे पूछना चाहते हैं कि उनसे कैसे, वास्तव में, यह काम करना चाहिए।


1
मैंने सोचा कि <RestorePackages>true</RestorePackages>* .csproj फ़ाइल में विज़ुअल स्टूडियो के लिए पर्याप्त जानकारी होनी चाहिए, लेकिन शायद ऐसा नहीं है।
बोरक बर्नार्ड

1

अब वह नगेट पैकेज बहाली का समर्थन करता है जिसे हम अधिक बारीकी से देख रहे हैं।

हम स्रोत नियंत्रण के लिए सबवर्सन का उपयोग करते हैं, और मेरे शुरुआती विचार हैं जिन्हें .nugetहमारी रिपॉजिटरी में जोड़ा जाना चाहिए, लेकिन svn का उपयोग करके जोड़ा गया : एक्सॉन ताकि यह किसी एकल स्थान पर इंगित हो।

इस तरह हम सभी डेवलपर्स और परियोजनाओं के लिए नए संस्करणों को स्वचालित रूप से बाहर निकाल सकते हैं। HEAD के बजाय, रिलीज शाखाओं पर परियोजनाओं के लिए, हम svn: externals संदर्भ का संशोधन निर्दिष्ट कर सकते हैं यदि हम अकेले नगेट छोड़ना चाहते हैं।

हमारे पास बहुत सारी परियोजनाएं हैं, इसलिए इसका मतलब यह भी है nuget.exeकि रेपो में कई बार नकल नहीं होती है ।


मैं बाहरी प्रोजेक्ट पैकेजों को पुनर्स्थापित करने के लिए NuGet प्राप्त नहीं कर सका। क्या यह आपके लिए काम करता है?।
डॉगुहान उलुका

हाँ, हालांकि NuGet.exe को लगता है कि हमारे स्थानीय रेपो (IIS 6 + SSL + AD प्रमाणीकरण) को प्रमाणित करने में समस्याएँ आ रही हैं, जबकि Powershell या Extension Plugin ठीक काम करता है।
si618

1

हमारे पास nuget.configफ़ोल्डर में फ़ाइल है, क्योंकि इसमें पैकेज स्रोत क्षेत्र का उपयोग करके हमारे आंतरिक नगेट सर्वर के संदर्भ हैं: https://docs.nuget.org/consume/nuget-config-settings

इस कारण के अलावा, आपको विजुअल स्टूडियो को पैकेजों के डाउनलोडिंग को संभालने देना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.