में परियोजना संदर्भ के बजाय डीएल संदर्भ द्वारा .NET असेंबली निर्भरताओं का प्रबंधन करना हमारे पास एक .NET प्रोजेक्ट है जिसमें एकाधिक सबप्रोजेक्ट्स (लगभग 20) शामिल हैं। कई समाधान हैं, जिनमें से प्रत्येक केवल उन सबप्रोजेक्ट्स हैं जो विशेष समाधान के लिए प्रासंगिक हैं।वीएस
मनमाने ढंग से समाधान की अनुमति देने के लिए, हमारे सबप्रोजेक्ट्स परियोजना संदर्भों के माध्यम से एक दूसरे का संदर्भ नहीं देते हैं, बल्कि प्रत्यक्ष डीएल संदर्भों के माध्यम से। HintPath को $ (कॉन्फ़िगरेशन) बनाने के लिए csproj फ़ाइल का थोड़ा tweaking है, इसलिए डीबग संदर्भ डीबग डीएलएस बनाता है और रिलीज संदर्भ रिलीज डीएलएस बनाता है।
सभी अच्छा काम करता है, लेकिन वहाँ दो प्रमुख समस्याएं हैं - एक कष्टप्रद है और एक अन्य वास्तव में तीव्र है:
- वी.एस. निर्भरता गणना के प्रयोजन के लिए dll संदर्भ को नहीं पहचानता। जब भी कोई नई परियोजना या संदर्भ जोड़ा जाता है, तो हमें "परियोजना निर्भरता" संवाद का उपयोग करके निर्भरताओं को मैन्युअल रूप से निर्दिष्ट करना होगा। यह कष्टप्रद है।
- हम न तो रिशेर्पर और न ही विजुअल असिस्ट का उपयोग करते हैं (महान उपकरण, लेकिन हम उनका उपयोग नहीं करते हैं, यह एक दिया गया है)। हम मानक "ब्राउज़ टू डेफिनिशन" कमांड का उपयोग करना चाहते हैं (उदाहरण के लिए, स्रोत कोड पर संदर्भ मेनू से उपलब्ध)। गंभीर समस्या यह है कि यह केवल क्रॉस प्रोजेक्ट का काम करता है यदि एक प्रोजेक्ट प्रोजेक्ट संदर्भ का उपयोग करके दूसरे का संदर्भ देता है और यह संदर्भ तब नहीं होता है जब संदर्भ प्रत्यक्ष डीएल संदर्भ, होता है भले ही संदर्भित प्रोजेक्ट समाधान में शामिल किया गया हो! यह एक वास्तविक बमर है, क्योंकि स्रोत पर नेविगेट करने के बजाय यह मेटाडेटा में जाता है।
मैं उन लोगों की सलाह ले रहा हूं जो हमारे जैसे डीएल संदर्भों का उपयोग करते हैं और इन दोनों मुद्दों को किसी तरह से दूर करते हैं। धन्यवाद।
संपादित करें:
ध्यान दें, कि "परिभाषा करने के लिए ब्राउज़ करें" मुद्दा के अलावा, परियोजना के संदर्भ के बजाय Dll संदर्भ होने परियोजना प्रबंधक पर केवल एक बार लागत आती - प्रत्येक की परियोजना निर्भरता अद्यतन करने के लिए है जो प्रभावित समाधान जब एक नई परियोजना को जोड़ा जाता है या एक नई निर्भरता पेश की जानी चाहिए। इन परियोजना निर्भरताओं को .sln फ़ाइल में रखा जाता है और किसी भी प्रोजेक्ट की आवश्यकता नहीं होती है जब तक कोई नई प्रोजेक्ट नहीं आती है या एक नई निर्भरता बनाई जाती है, जो अक्सर ऐसा नहीं होता है।
हम सीआई सर्वर पर हमारी परियोजनाओं के निर्माण के लिए एमएसबिल्ड का उपयोग कर रहे हैं, जो वीएस के समान एसएसएन फाइलों का उपयोग करता है। एक मुख्य। एसएलएन फ़ाइल है, जिसमें सभी सबप्रोजेक्ट शामिल हैं।
मैं और अधिक गंभीर समस्या पर जोर देना चाहता हूं - किसी अन्य प्रोजेक्ट में एक निश्चितता को ब्राउज़ करने में असमर्थता, हालांकि दोनों परियोजनाएं एक ही समाधान में हैं क्योंकि संदर्भ डीएलएल संदर्भ हैं। यह कष्टप्रद है और यह एक उपद्रव है, इस बात का कोई कारण नहीं है कि वीएस ने सुविधा को सक्षम करने के लिए परियोजना संदर्भों पर जोर दिया। अन्य उपकरण, जैसे रिशेर्पर या विजुअल असिस्ट में यह सीमा नहीं है। हां, हमारे पास इन औजारों और अवलोकन योग्य भविष्य में होने की संभावना नहीं है।
बस यह सुनिश्चित करने के लिए कि मैं समझता हूं, आपके पास एक समाधान है जिसमें इसमें एक या अधिक परियोजनाएं हैं। इनमें से कुछ परियोजनाएं समाधान में अन्य परियोजनाओं के डीएलएल आउटपुट का संदर्भ देती हैं, भले ही संदर्भित परियोजना समाधान में है? वास्तव में –
। लेकिन अन्य समाधान भी हैं, जिनमें कुछ संदर्भित परियोजनाएं शामिल नहीं हैं। समाधान को हल करने के साथ इस लचीलापन के लिए एक खुशी के रूप में हम केवल डीएलएस संदर्भित करते हैं। लेकिन फिर हम क्रॉस प्रोजेक्ट "नेविगेशन पर ब्राउज़ करें" क्षमता को खो देते हैं भले ही शामिल परियोजनाएं समाधान में पाई जाती हैं। – mark
हाँ, मुझे उससे भी नफरत है। एक समाधान वास्तव में महान होगा। –