6

मेरे पास कई विजुअल स्टूडियो समाधान हैं जो एक आम प्रोजेक्ट साझा करते हैं।कई समाधानों में साझा कोड को रीफैक्टर करना

उदाहरण:

Solution of the common project 
    - Common project 

Solution A 
    - Common project 
    - Custom project A 

Solution B 
    - Common project 
    - Custom project B 

And so on... 

प्रत्येक समाधान अपने आप ही SVN भंडार है डेवलपर्स एक विशेष समाधान पर केवल काम करने में सक्षम होने के लिए।

लगभग 50-60 अलग-अलग समाधान होंगे और मुझे उन्हें अलग से बनाने में सक्षम होना चाहिए।

जब मैं होगा, उदाहरण के लिए, अन्य परियोजनाओं में उपयोग की जाने वाली आम परियोजना में एक विधि का नाम बदलना, क्या हर समाधान में परिवर्तन लागू करने का कोई तरीका है?

इस समाधान की तरह यहां सुझाए गए (Is there a refactoring tool that works across solutions files?), मैं एक मास्टर समाधान बना सकता हूं जिसमें सभी परियोजनाएं और रिफैक्टर शामिल हैं, लेकिन मुझे यह करने में सक्षम होने के लिए प्रत्येक रिपॉजिटरी को चेकआउट और अपडेट करना होगा।

क्या मुझे अपने भंडारों की संरचना को बदलना चाहिए?

क्या ऐसा करने का कोई बेहतर तरीका है या इस समस्या से बचें?

+0

क्या आप कस्टम परियोजनाओं में सामान्य परियोजना को शामिल करने के लिए svn: बाहरी का उपयोग कर रहे हैं? –

+0

नहीं, मैं नहीं करता हूं। डेवलपर को मैन्युअल रूप से प्रोजेक्ट को चेकआउट करना होगा ताकि संदर्भ टूट न जाए। मैं svn: बाहरी पर एक नज़र डालेंगे। – Jason

उत्तर

3

विजुअल स्टूडियो में वर्तमान में खुला नहीं होने वाली परियोजनाओं के लिए एक विशेष रिफैक्टरिंग लागू करने का कोई तरीका नहीं है। रिफैक्टरिंग केवल मौजूदा समाधान में खुली परियोजनाओं पर लागू की जाएगी।

बड़ी संख्या में समाधानों में रिफैक्टरिंग की सुविधा के लिए सबसे अच्छा तरीका केवल सभी परियोजनाओं को शामिल करने वाला एक मास्टर समाधान बनाना है। यह सामान्य प्रयोजनों के लिए थोड़ा अस्वस्थ और धीमा हो सकता है। लेकिन बड़े पैमाने पर रिफैक्टरिंग के लिए यह बहुत सारी चीजें बचा सकता है।

मैं काफी यकीन है कि मैं समझता हूँ कि आप द्वारा

क्या मतलब है मैं चेकआउट और हर भंडार को अपडेट यह करने के लिए सक्षम होने के लिए करना होगा नहीं कर रहा हूँ।

कोई भी रिफैक्टरिंग जो आपकी सभी परियोजनाओं को छूती है, अंत में आप सभी को अपडेट करने के लिए मजबूर कर देगी। तो ऐसा लगता है कि आपको वैसे भी ऐसा करने की ज़रूरत होगी। मुझे लगता है कि मैं यहाँ कुछ याद कर रहा हूँ।

+0

मैं प्रत्येक परियोजना को प्रत्येक अलग भंडार से चेकआउट करूँगा जो एक साझा समाधान का उपयोग करने में सक्षम होने के लिए साझा परियोजना का उपयोग करता है। बात यह नहीं है कि हर डेवलपर के पास अपने वर्कस्टेशन पर सभी परियोजनाएं होनी चाहिए। – Jason

+0

@ जेसन मैं अभी भी समझ में नहीं आता हूं। यदि आपका रिफैक्टरिंग वास्तव में हर प्रोजेक्ट को छूता है तो क्या आपको अंत में निर्माण को तोड़ने के लिए अपनी मशीन पर हर परियोजना नहीं है? – JaredPar

+0

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

2

हम आप के रूप में एक समान परिदृश्य है और हम इसे हल करने के लिए एक बहु-आयामी दृष्टिकोण का उपयोग:

1) ग्राहक विशिष्ट परिवर्तनों इंटरफेस का उपयोग, अधिरोहित तरीकों, या नई के माध्यम से मूल आवेदन से अलग हैं विधियां (जब कोई मौजूदा व्यक्ति पर्याप्त नहीं होगा)।

यह सुनिश्चित करता है कि मूल अनुप्रयोग ढांचा मौजूदा समाधानों के साथ पिछड़ा संगत है।

2) दुर्लभ मामले में जहां सभी समाधानों पर एक बदलाव लागू किया जाना चाहिए, हमारे पास एक एकल मास्टर समाधान है जिसे हम सभी परियोजनाओं को अद्यतन करने के लिए उपयोग कर सकते हैं।

3) निरंतर एकीकरण: प्रत्येक एकल चेकइन पर, प्रत्येक एकल समाधान स्वचालित रूप से बनाया जाता है और सफलता या असफल संदेश सभी डेवलपर्स को वितरित किए जाते हैं ताकि जिम्मेदार पार्टियां किसी भी ब्रेकिंग बदलाव को ठीक कर सकें।

उत्तरदायित्व शामिल होने के कारण (हर कोई जानता है कि किसने निर्माण तोड़ दिया), डेवलपर्स पर यह सुनिश्चित करने के लिए पर्याप्त मात्रा में सकारात्मक (सकारात्मक) दबाव है कि वे समस्या का कारण बनने वाले नहीं हैं।

हम एक उपवर्तन भंडार के साथ CruiseControl.Net का उपयोग करते हैं, लेकिन मुझे यकीन है कि वहां कई अन्य समाधान हैं जो आपके भंडार के साथ काम करेंगे।

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