2012-10-21 21 views
6

मुझे पता है कि NuGet जैसे पैकेज प्रबंधक हमें तृतीय पक्ष घटकों का उपयोग करना चाहते हैं।हमें Nuget जैसे पैकेज प्रबंधक की आवश्यकता क्यों है?

से Nuget Codeplex पृष्ठ:

NuGet एक मुक्त, खुला स्रोत डेवलपर ध्यान केंद्रित पैकेज प्रबंधन की प्रक्रिया को सरल दौरान एक .NET अनुप्रयोग में तीसरे पक्ष के पुस्तकालयों को शामिल पर नेट मंच के इरादे के लिए प्रणाली है विकास।

बाहर वहाँ नेट मंच के लिए उपयोगी 3 पार्टी खुले स्रोत संग्रहालय की एक बड़ी संख्या में हैं, लेकिन ओएसएस पारिस्थितिकी तंत्र से परिचित नहीं उन लोगों के लिए, यह एक परियोजना में इन पुस्तकालयों को खींचने के लिए एक दर्द हो सकता है।

चलो एक उदाहरण के रूप में ELMAH लेते हैं। यह एक ठीक त्रुटि लॉगिंग उपयोगिता है जिसमें अन्य पुस्तकालयों पर कोई निर्भरता नहीं है, लेकिन अभी भी एक परियोजना में एकीकृत करने के लिए चुनौती है। ये चरण हैं:

Find ELMAH 
Download the correct zip package. 
“Unblock” the package. 
Verify its hash against the one provided by the hosting environment. 
Unzip the package contents into a specific location in the solution. 
Add an assembly reference to the assembly. 
Update web.config with the correct settings which a developer needs to search for. 

और यह ऐसी लाइब्रेरी के लिए है जिस पर कोई निर्भरता नहीं है। कल्पना करें कि यह NHibernate.Linq के लिए है जिसमें एकाधिक निर्भरताएं हैं जिनमें प्रत्येक को समान चरणों की आवश्यकता है। हम बहुत बेहतर कर सकते हैं!

NuGet पैकेज के लिए इन सभी सामान्य और कठिन कार्यों को के रूप में अच्छी तरह से अपनी निर्भरताओं के रूप में स्वचालित करता है। यह निकालता है लगभग सभी एक परियोजना की स्रोत पेड़ में एक तीसरी पार्टी खुला स्रोत पुस्तकालय शामिल की चुनौतियों के

इन चरणों का सरल कार्य है कि हम करते हैं जब हम सेटअप करने के लिए एक परियोजना चाहते हैं। यह केवल तृतीय पक्ष घटकों को जोड़ने के स्वचालन के लिए है और विन्यास फाइलों में त्रुटि का मौका देता है? या इसकी अधिक ज़िम्मेदारियां हैं!

+0

मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं, क्या आप इसे कुछ और करने की उम्मीद कर रहे थे? – Betty

+0

मुझे लगता है कि समस्या यह है कि Nuget जैसे कुछ हल करना चाहते हैं, यह एक बड़ा सौदा नहीं है! और कुछ स्थितियों में यह टीम के कार्यों में जटिलता की परत जोड़ता है, विशेष रूप से जूनियर प्रोग्रामर से निपटने पर। – Navid

+0

आपको इसकी आवश्यकता है क्योंकि यह उन सभी चीजों को करता है ..? – Patrick

उत्तर

17

यह मूल्य खुले में छिपा हुआ है: एक पैकेज प्रबंधक जैसे NuGet आपको स्वचालन का उपयोग करके सॉफ़्टवेयर निर्भरताओं से निपटने में मदद करता है। कई लोग धारणा करते हैं कि यह केवल ओपन सोर्स या थर्ड पार्टी घटकों के लिए है, लेकिन आप अपने आंतरिक पैकेजों के लिए भी इसका उपयोग कर सकते हैं।

NuGet बारे में महान बात है (कुछ लाभ नाम हैं):

  • NuGet बजाय सूत्रों शाखाओं की, घटकों के पुन: उपयोग को प्रोत्साहित करती है क्योंकि आप परोक्ष वास्तविक "रिलीज" (भले ही रिलीज) पर भरोसा करते हैं
  • आप अपने VCS खजाने सूजन बाइनरी से छुटकारा पा सकते (पैकेज सुविधा बहाल)
  • यह पैकेज रचनाकारों रास्ता पैकेज भस्म हो जाएगा के बारे में सोचना मजबूर करता है और उन्हें पैकेज स्थापना के दौरान घटक के विन्यास के साथ काम (जो जानता है कि छोड़ देता है सबसे अच्छा पैकेज निर्माता से पैकेज को कॉन्फ़िगर कैसे करें?)। उदाहरण के रूप में ELMAH के बारे में सोचें।
  • एक पैकेज रिपोजिटरी पर स्वचालित रूप से पैकेज निर्माण और प्रकाशन स्वचालित रूप से वितरण (सॉफ़्टवेयर घटकों के लिए) का एक रूप है। OctopusDeploy भी इसे एक कदम आगे ले जाता है और तैनाती के लिए तैयार पूरी वेब साइटों पैकेजिंग सक्षम बनाता है।
  • NuGet प्रोत्साहित करता है और कभी-कभी आपको कुछ एएलएम सर्वोत्तम प्रथाओं का पालन करने के लिए प्रोत्साहित करता है। जैसे एक पैकेज में एक संस्करण है, इसलिए आपको अपनी संस्करण रणनीति के बारे में सोचना होगा (उदा। सेमवीर।संगठन) को
  • NuGet SymbolSource.org (जो भी अपने खुद के स्थापित करने के लिए) एक समुदाय संस्करण है के साथ एकीकृत: यह एक आसानी से इस जानकारी को हर समय
  • एक या अधिक पैकेज होने जहाज के बिना संकुल जारी किया डिबग करने के लिए अनुमति देता है संगठन निर्भरता मैट्रिक्स को बनाए रखने के लिए, या यहाँ तक कि कई परियोजनाओं द्वारा उपयोग में हैं ओएसएस लाइसेंस की एक सूची
  • NuGet उपलब्ध पैकेज अपडेट के बारे में सूचित
  • बनाना संकुल बनाता है लोगों घटक वास्तुकला के बारे में सोचने का निर्माण (खजाने आसान बनाता है सभी निर्भरताओं को भी पैक किया जाना चाहिए)
  • पैकेज की निर्भरता ऑटो हैं omatically का समाधान (तो आप किसी भी भूल सकता है नहीं) जब

उपरोक्त सूची गैर संपूर्ण है आवश्यक

  • NuGet बहुत चालाक विधानसभा बाध्यकारी रीडायरेक्ट जोड़ने के लिए है, लेकिन मुझे उम्मीद है कि मैं इस सवाल का जवाब में प्रमुख लाभ इस प्रकार कवर । मुझे पूरा भरोसा है कि वहां और अधिक चीजे हैं।

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

  • +0

    धन्यवाद। मुझे लगता है कि थेस छुपे हुए फायदे हैं जो मुझे याद आती हैं! उत्कृष्ट पोस्ट – Navid

    3

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

    लाइव exapmle: कम परियोजना आकार मायने रखती है, जबकि project.Like की तैनाती करता है, तो समाधान कोड के 500Mb और संकुल की 200Mb है तो अतिरिक्त 200MB वास्तव में ठोस अपलोड करने की परियोजना प्रत्येक time.Instead अपलोड करने के लिए लागत आकार डीएलएल फाइलों को हमें संकुल.कॉन्फिग फ़ाइल में बस अपना संदर्भ सेट करने की आवश्यकता है।

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