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


68

मैं जानना चाहता हूँ

C # या VB.NET प्रोजेक्ट में हमें PACKAGE फोल्डर (नगेट पैकेज फोल्डर जो कि मेरे प्रोजेक्ट के रूट के लिए बनाया गया है, जिसमें nupkg फाइल्स और अन्य कंटेंट शामिल हैं) को हमारे सोर्स कंट्रोल रिपॉजिटरी (उदाहरण के लिए Git) में शामिल होना चाहिए।


बिल्कुल हाँ , क्योंकि ये फाइलें आपके कोड का हिस्सा हैं और आपका प्रोजेक्ट उनके बिना नहीं बनेगा।
शार्की

मैंने समय से पहले एसओ पर एक समान प्रश्न पूछा था। तुम भी वहाँ जवाब के लिए देख सकते हैं: stackoverflow.com/questions/1710027/… :)
cwap

मुझे आश्चर्य है कि मावेन दुनिया में कोई भी क्यों नहीं पूछता "क्या हमें संस्करण नियंत्रण में तीसरे पक्ष के कामों को शामिल करना चाहिए"। बहुत ठोस नहीं होने के बावजूद काम न करने के लिए कुछ ठोस तर्क दें।
लोंग

जवाबों:


28

बहुत समय बीत चुका है, और नुगेट बदल गया है, इसलिए यहां एक नया जवाब है।

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

तो इन दिनों सरल जवाब नहीं है, आप नहीं करना चाहिए। यदि आप उन पैकेजों के बारे में चिंतित हैं जिन्हें आपको गायब होने की आवश्यकता है, तो आपको एक स्थानीय नुगेट दर्पण बनाना चाहिए जिसे आप अलग से बैकअप लेते हैं।


6
मैं VS2015 पर हूं (विचार करें कि VS2017 आपको यह उत्तर लिखने से 3 दिन पहले ही जारी किया गया है), और पैकेज फ़ोल्डर मेरे समाधान रूट में मौजूद है। मैं उत्सुक हूं कि कैसे और कब नूगेट बदल गया है।
तीज

नुगेट संस्करण 3 के साथ बदल गया, जिसे वीएस2015 समय सीमा के दौरान कुछ समय के लिए बैंड से बाहर कर दिया गया था।
सेबेस्टियन रेडल

मैंने अभी-अभी अपने काम के कंप्यूटर और पैकेजों की जाँच की है जहाँ आपने उल्लेख किया है। लेकिन मेरे होम कंप्यूटर पर वे प्रोजेक्ट डायरेक्टरी में हैं। दोनों VS2015 (पेशेवर @ काम, समुदाय @ घर) पर हैं और घर एक बहुत हालिया स्थापना है ... यह अजीब है।
तीजय

12
अभी पिछले हफ्ते VS 2017 स्थापित किया, कल एक नया प्रोजेक्ट बनाया और मेरे प्रोजेक्ट में एक पैकेज डायरेक्टरी है।
जेरेमी

2
आप CI के लिए क्या करते हैं? क्या आप इसे बार-बार सभी नौगट पैकेज डाउनलोड करते हैं? (टीबीएच: मैं, खुद, बहुत अस्पष्ट हूं कि मेरी राय क्या है)
तोमर डब्ल्यू

50

निर्भर करता है।

यह निर्धारित करने के लिए कि क्या सभी में फ़ोल्डर को अनदेखा करना संभव है, बार्ट वैन वेन शेनॉ का उत्तर देखेंpackages

मूल रूप से: हाँ, NuGet को डिज़ाइन किया गया है ताकि आप packagesफ़ोल्डर को अनदेखा कर सकें और NuGet इंटरनेट से सब कुछ खींच लेगा यदि यह गायब है।

लेकिन क्या आपको इसे अनदेखा करना चाहिए? मैं कहता हूं: यह निर्भर करता है।
IMO का सवाल है "क्या हम पैकेज रिपॉजिटरी उपलब्ध नहीं होने की स्थिति में काम करना जारी रख सकते हैं" (यह अस्थायी या स्थायी रूप से हो)

मेरी व्यक्तिगत ओएसएस परियोजनाओं के लिए, मेरे पास packagesउन सभी में अनदेखा किया गया फ़ोल्डर है।
जब nuget.org ऑफ़लाइन है, तो मैं अभी प्रतीक्षा करूंगा और एक और दिन जारी रखूंगा।

लेकिन यह काम में कुछ अलग है।
निश्चित रूप से, आपके पास शायद अभी भी किसी मशीन पर स्थानीय स्तर पर पैकेज हैं, लेकिन आपके बिल्ड के टूटने पर कुछ जगह की बचत होती है क्योंकि आपका बिल्ड सर्वर nuget.org तक नहीं पहुंच सकता है?

हमने तय किया कि अंतरिक्ष सस्ता है और हम परेशानी नहीं चाहते हैं, इसीलिए हम packagesफोल्डर को स्रोत नियंत्रण के लिए प्रतिबद्ध कर रहे हैं ।


1
कितनी बार nuget.org अनुपलब्ध है?
बार्टोज़

4
शायद बहुत बार नहीं। लेकिन शायद मुझे "ऑफ़लाइन" के बजाय "अप्राप्य" कहना चाहिए था। कुछ साल पहले, हमारे पास काम पर एक घटना थी जहां एक खुदाई करने वाले ने गलती से हमारी इमारत में इंटरनेट केबल काट दिया था। मरम्मत के लिए एक दिन से अधिक समय लिया। अगर हमने nuget.org पर भरोसा किया होता, तो हम अपनी परियोजनाओं का निर्माण नहीं कर पाते। (हाँ, मुझे पता है, आजकल नुगेट स्थानीय स्तर पर पैकेजों को कैश करता है ... लेकिन फिर वापस नहीं)
क्रिश्चियन स्पिक

मैं कहूंगा कि जब आप संकुल फ़ोल्डर की जाँच नहीं करते हैं तो निर्माण समय बहुत लंबा होता है क्योंकि यह संकुल पुनर्स्थापना के दौरान संकुल के निर्माण का अधिकांश समय खर्च करता है।
एरोनल्स

29

स्रोत नियंत्रण रिपॉजिटरी में जाने के लिए मूल नियम यह है कि आप एक प्रोजेक्ट से संबंधित हर चीज को स्टोर करते हैं, जिसे आपको प्रोजेक्ट के निर्माण, परीक्षण, तैनाती और निष्पादित करने में सक्षम होने की आवश्यकता होती है और जो रिपॉजिटरी में पहले से मौजूद वस्तुओं से उत्पन्न नहीं हो सकती है। ।

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


20
मुझे लगता है कि आप किसी भी तीसरे पक्ष के कोड का एक संस्करण सुरक्षित रूप से संग्रहीत परियोजना में इस्तेमाल किया जाना चाहिए, अगर 3 पार्टी परियोजना को हटा दिया जाता है, यह होस्टिंग साइट चला गया है आदि। आपके संस्करण नियंत्रण रिपॉजिटरी में ऐसा करने के लिए एक अच्छी जगह है । यदि आवश्यक हो, तो यह आपको उस कोड के पिछले संस्करण में रोलबैक करने का अवसर भी देता है।
बेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.