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

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

मेरी समस्या का एक हिस्सा यहां भी वर्णित है अन्य साझा प्रोजेक्ट से साझा किए गए प्रोजेक्ट का संदर्भ

लेकिन मुझे एक और सामान्य समाधान चाहिए। आपकी मदद के लिए आप सभी को शुक्रिया।

3
Thế Long 1 जुलाई 2019, 05:45

2 जवाब

सबसे बढ़िया उत्तर

आपको उस प्रोजेक्ट में संदर्भ जोड़ना होगा जो साझा प्रोजेक्ट का उपभोग करता है।

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

1
John 1 जुलाई 2019, 05:50

लंबी कहानी छोटी: साझा किए गए प्रोजेक्ट उस तरह से काम नहीं करते, और वास्तविक रूप से नहीं करते हैं।

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

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

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

हालांकि साझा परियोजनाओं में संदर्भ होना अच्छा होगा, यह आपके विचार से बहुत कम सरल हो जाता है। एक ही साझा परियोजना को उन परियोजनाओं में शामिल किया जा सकता है जो विभिन्न ढांचे, प्लेटफार्मों और आर्किटेक्चर को लक्षित करते हैं। मान लें कि आप कुछ कोड बना रहे हैं जो आईओएस, मोनो, विंडोज .NET फ्रेमवर्क और .NET कोर पर चलेगा, प्रत्येक लक्ष्य के लिए विशिष्ट कोड और कुछ साझा कोड के साथ। यदि आप साझा प्रोजेक्ट में NuGet निर्भरता जोड़ने का प्रयास करते हैं तो यह उनमें से कम से कम एक पर आपके चेहरे पर उड़ने वाला है। अधिकांश संदर्भों के साथ ही। .NET कोर के लिए आवश्यक सभी संदर्भ जोड़ें और अचानक अन्य प्रोजेक्ट संकलित नहीं होते हैं।

2
Corey 1 जुलाई 2019, 06:20