.NET एप्लिकेशन में संदर्भों को संभालने का सबसे अच्छा तरीका क्या है


9

हाल ही में काम के दौरान हम एक समस्या में भाग गए जहां हमने एक प्रोजेक्ट को टैग / ब्रांच किया था और डीएल / प्रोजेक्ट संदर्भों के कारण कुछ संकलन मुद्दे थे जो पुराने फ़ोल्डर संरचना की ओर इशारा कर रहे थे।

हमने प्रत्येक प्रोजेक्ट के लिए एक 'एक्सटर्नल बिन' फोल्डर बनाया और इन फ़ोल्डरों को संदर्भित डीएलई की प्रतिलिपि बनाई। क्या यह सबसे अच्छा तरीका है या इसे संभालने के लिए एक विशिष्ट उद्योग मानक है?

जवाबों:


21

मैं कहूंगा कि निर्भरता को संभालने का सबसे अच्छा तरीका है नगेट

नगेट संस्करणों का प्रबंधन कर सकता है और स्वचालित रूप से आपके स्थानीय नगेट सर्वर से निर्भरता को डाउनलोड कर सकता है।

स्थानीय सर्वर बनाना / कॉन्फ़िगर करना काफी आसान है। बस एक नया खाली ASP.NET प्रोजेक्ट बनाएं और nuget-servernuget पैकेज (nuget का उपयोग करके) स्थापित करें ।

इसका मतलब यह भी है कि आपको सभी निर्भरता में जांचना होगा और / या TFS का उपयोग करके अपने संस्करणों को प्रबंधित करना होगा।


1
मुझे लगता है कि ज्यादातर कंपनियां इस कुएं का उपयोग करने में विफल हैं। वास्तव में, मुझे अभी तक एक बिल्ड सर्वर को ठीक से कॉन्फ़िगर करने के लिए इसे लाभ प्राप्त करने के लिए देखना है, इसलिए +1 कुछ ऐसा है जिसे मैं हर जगह देखना चाहता हूं।
डेल्ट्री

मैंने एक सवाल पूछने की योजना बनाई कि क्या नगेट स्क्रिप्ट (या कुछ) नहीं हो सकता है ताकि पैकेजों को बिना जोड़ के रखा जा सके और स्वचालित रूप से निर्भरताएँ डाउनलोड की जा सकें ... और पहला खोज परिणाम बताता है कि नगेट इस बॉक्स से बाहर का समर्थन करता है! धन्यवाद!
मॉरमगिल

5

इसका वास्तव में नहीं है - Microsoft कहता है कि संदर्भों को संभालने का सबसे अच्छा तरीका एक विशाल समाधान में अपनी परियोजना का निर्माण करना है। हाँ, मुझे पता है, वे वास्तव में यह भी मतलब है।

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

वे कहते हैं

In general you should:

    Use a single solution strategy unless the resulting solution is too large to load into Visual Studio.
    Use multiple solutions to create specific views on sub-systems of your application.
    Use multiple solutions to reduce the time it takes to load a solution and to reduce build time for developers.

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

मेरे पास .NET बिल्ड के साथ समस्याएँ हैं जो सिस्टम को केवल निर्माण के लिए शॉर्टकट बनाने की कोशिश करते हैं जो केवल आवश्यक है, एक रात का निर्माण जो सब कुछ करता है, और प्रत्येक नई असेंबली को एक निर्देशिका में कॉपी करता है सभी के लिए सिंक में रखने का सबसे अच्छा तरीका था - विशेष रूप से परीक्षक। ध्यान दें कि यह वास्तव में केवल .NET ऐप पर लागू होता है, C ++ वाले अभी भी काम करते हैं क्योंकि उनके पास असेंबली या इसी तरह के पहलू नहीं हैं जो कॉलिंग घटकों के साथ समस्याएं पैदा कर सकते हैं। यह दृष्टिकोण अच्छी तरह से काम करता है, लेकिन आप हमेशा यह नहीं मान सकते हैं कि आंशिक बिल्ड ठीक हैं, पूरी बात को उलट देना और पुनर्निर्माण करना सबसे सुरक्षित है।


यह समझ में आता है, एक समाधान जिसमें कई परियोजनाएं हैं (आपका एपीआई डीएलएल, आवेदन परियोजना)।
स्नूप

1

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


0

संस्करण नियंत्रण के लिए तोड़फोड़ का उपयोग करते समय, आप इस उद्देश्य के लिए "बाहरी" संपत्ति का उपयोग कर सकते हैं । यह आपको अपने वर्तमान प्रोजेक्ट के पास एक साझा DLL की एक स्थानीय प्रतिलिपि को संबंधित पथ में रखने की अनुमति देता है। यह उस रिश्तेदार फ़ाइल पथ द्वारा DLL को संदर्भित करना आसान बनाता है जो परिवर्तित नहीं होता है, तब भी जब आप अपनी परियोजना की मुख्य निर्देशिका को किसी भिन्न फ़ोल्डर में बदलते हैं। एक्सटर्नल आपको यह भी परिभाषित करते हैं कि किस विशेष संस्करण या संशोधन को शामिल करना है।

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