5

हमारे पास एक वीएस -2008 समाधान फ़ाइल है जिसमें लगभग 80 परियोजनाएं हैं (हाँ मुझे पता है कि यह बेकार है)।छोटे समाधानों में बड़े वीएस समाधान को कैसे तोड़ें

परियोजनाओं को विभिन्न फ़ोल्डर्स में व्यवस्थित किया जाता है, और कुछ शीर्ष 3 "डीएलएल" फ़ोल्डर में अन्य तृतीय पक्ष डीएलएल पर निर्भर हो सकते हैं।

हम इसे कई छोटी एसएसएल फाइलों में दोबारा प्रतिक्रिया देना चाहते हैं, जिनमें से प्रत्येक में उचित संख्या में परियोजनाएं हैं।

समस्या यह है कि, परियोजना फ़ाइलों को चारों ओर ले जाने पर, उनके भीतर संग्रहीत सापेक्ष पथ टूट जाएंगे और इसलिए हमें इसे ठीक करने के लिए बहुत सारे मैन्युअल "पैच अप" करना होगा।

क्या ऐसा कुछ करने के लिए कोई उपकरण या कोई सिद्ध तकनीक है?

उत्तर

1

हमने कुछ ऐसा ही किया, और संदर्भों को ठीक करने के लिए, हमने एक त्वरित उपयोगिता लिखी जो कि .csproj या .vbproj फ़ाइलों (जो मूल रूप से एक्सएमएल फाइलें हैं) को पार्स करेगा और प्रभावित पथ को ठीक करेगा जहां .proj फ़ाइल स्वयं रिफैक्टरिंग के बाद स्थित था। यह मैन्युअल रूप से प्रोजेक्ट xml को बदलने या मानव त्रुटियों से बचने के लिए संदर्भों को हटाने से बेहतर था।

एक बार जब आप जानते हैं कि प्रोज फ़ाइल कहां है और जहां आम फ़ाइलें (या अन्य फाइलें) होंगी, तो आप प्रोजेक्ट फ़ाइल में रिलेशनशिप पथ के साथ संदर्भ नोड को संशोधित करेंगे। तो जैसे के लिए, आप कि अगर जहां NHibernate.dll अब रहता है

<Reference Include="NHibernate"> 
     <HintPath>..\Common\ServicesShared\Library\NHibernate.dll</HintPath> 
</Reference> 

को .proj फ़ाइल में मूल

<Reference Include="NHibernate"> 
     <HintPath>..\..\ServicesShared\Library\NHibernate.dll</HintPath> 
</Reference> 

बदलने के लिए हो सकता है।

उम्मीद है कि यह आपके लिए काम करेगा।

+0

धन्यवाद। मैं इसके लिए एक कस्टम उपयोगिता बनाने की लाइनों के साथ भी सोच रहा था। आपके उदाहरण में, आप थोड़ा अलग मुद्दा प्रदर्शित करते हैं, जहां संदर्भित डीएलएल के लिए उपयोग किया जाने वाला वास्तविक फ़ोल्डर पूरी तरह से बदल सकता है (एक .csproj प्रति/चाल ऑपरेशन के नतीजे के रूप में नहीं)। क्या आपने इसे अपनी उपयोगिता में भी संभाला था? –

+0

हमने पुस्तकालय फ़ोल्डर परिवर्तनों को संभाला है, सभी प्रोज फ़ाइलों को स्थानांतरित नहीं किया जा रहा है, लेकिन यदि यह मामला होना था कि यह लाइब्रेरी फ़ोल्डर नहीं था, लेकिन वास्तविक .csproj फ़ाइल अपेक्षाकृत स्थानांतरित हो गई थी, तो मुझे लगता है कि एक समान तर्क अभी भी हो सकता है लागू होना। प्रोजेक्ट फ़ाइलों के प्रत्येक सेट के लिए एक समाधान में एक साथ स्थानांतरित हो गया है, आपको पता चलेगा कि उन परियोजनाओं के लिए सापेक्ष पथ कैसे तय किए जाने चाहिए। हो सकता है कि आप प्रोजेक्ट फ़ाइलों के एक सेट के लिए प्रत्येक संदर्भ के लिए (पहले, बाद में) की एक प्रमुख मान जोड़ी बना सकें जो समाधान से संबंधित हों और तदनुसार .proj फ़ाइलों को अपडेट करें। उम्मीद है कि यह समझ में आता है। – desigeek