विज़ुअल स्टूडियो 2015 में साझा प्रोजेक्ट और क्लास लाइब्रेरी में क्या अंतर है?


240

मैं विजुअल स्टूडियो 2015 और साझा प्रोजेक्ट के लिए नई विशेषताओं को देख रहा था, लेकिन मुझे समझ में नहीं आया कि क्लास लाइब्रेरी या पोर्टेबल क्लास लाइब्रेरी का उपयोग करना अलग कैसे है। क्या कोई समझा सकता है?

संपादित करें: साझा प्रोजेक्ट विज़ुअल स्टूडियो 2015 में एक नई सुविधा है और एक पोर्टेबल क्लास लाइब्रेरी के लिए अलग है। मैं समझता हूं कि एक पोर्टेबल क्लास लाइब्रेरी क्या है। मैं यह समझने की कोशिश कर रहा हूं कि साझा परियोजना एक क्लास लाइब्रेरी में कैसे भिन्न होती है। नीचे लिंक देखें।

http://www.c-sharpcorner.com/UploadFile/7ca517/shared-project-an-impressive-features-of-visual-studio-201/


जवाबों:


238

एक साझा परियोजना और एक वर्ग पुस्तकालय के बीच का अंतर यह है कि उत्तरार्द्ध संकलित है और पुन: उपयोग की इकाई विधानसभा है।

जबकि पूर्व के साथ, पुन: उपयोग की इकाई स्रोत कोड है, और साझा कोड को प्रत्येक विधानसभा में शामिल किया गया है जो साझा परियोजना का संदर्भ देता है।

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

यहाँ भी देखें :

साझा प्रोजेक्ट संदर्भ समाधान एक्सप्लोरर में संदर्भ नोड के तहत दिखाई देता है, लेकिन साझा प्रोजेक्ट में कोड और परिसंपत्तियों को ऐसे माना जाता है जैसे कि वे मुख्य प्रोजेक्ट में जुड़ी फाइलें थीं।


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


1 इस सवाल और मेरे जवाब (अब तक) का सुझाव है कि साझा प्रोजेक्ट्स विज़ुअल स्टूडियो 2015 में एक नई सुविधा थी। वास्तव में, उन्होंने विजुअल स्टूडियो 2013 अपडेट 2 में अपनी शुरुआत की


1
मान लीजिए कि दो परियोजनाएं एक ही साझा परियोजना को संदर्भित करती हैं। यदि उनमें से एक दूसरे के लिए एक संदर्भ जोड़ता है, तो क्या आपको डुप्लिकेट प्रकार की घोषणा त्रुटियां मिलती हैं?
असद सईदुद्दीन

3
@ असद - मैंने जाँच नहीं की है, लेकिन मैं उम्मीद नहीं करूँगा। आपके पास दो अलग-अलग प्रकार हो सकते हैं, एक ही नाम के साथ, और एक ही नामस्थान के अंदर घोषित किए गए लेकिन अलग-अलग विधानसभाओं के भीतर। यह एक त्रुटि नहीं है, प्रति से।
Damien_The_Unbeliever

2017 में ओपी के रूप में मेरे पास एक ही सवाल था लेकिन अब हमारे पास .net मानक 2.0 है। क्या साझा परियोजनाएँ अब अप्रचलित नहीं हैं? यदि आप आज एक नया webapp या uwp ऐप बनाएँगे?
जेपी हेलिमोंस

1
@JPHellemons - .net मानक अच्छा है - लेकिन अगर आपको किसी भी कारण से इसके बाहर जाने की आवश्यकता है (जैसे कि यदि विशिष्ट प्लेटफार्मों पर केवल कार्यक्षमता उपलब्ध है) तो एक साझा प्रोजेक्ट अभी भी एक अच्छा दृष्टिकोण हो सकता है।
डेमियन_इन_उन्नीवर

1
हम कहते हैं कि साझा परियोजना के साथ हम जावास्क्रिप्ट फ़ाइलों को साझा कर सकते हैं। हम एक बंडलकॉन्फिग में इसका उपयोग कैसे करते हैं?
लेथ

34

मुझे इस ब्लॉग से कुछ और जानकारी मिली ।

  • क्लास लाइब्रेरी में, जब कोड संकलित किया जाता है, तो प्रत्येक लाइब्रेरी के लिए असेंबली (dll) उत्पन्न होती हैं। लेकिन साझा परियोजना के साथ इसमें कोई हेडर जानकारी नहीं होगी, इसलिए जब आपके पास साझा प्रोजेक्ट संदर्भ होगा तो इसे मूल एप्लिकेशन के भाग के रूप में संकलित किया जाएगा। वहां अलग से डीएल नहीं बनाए जाएंगे।
  • क्लास लाइब्रेरी में आपको केवल C # कोड लिखने की अनुमति है जबकि साझा प्रोजेक्ट में C # कोड फाइलें, XAML फाइल या जावास्क्रिप्ट कोड आदि जैसी कोई भी चीज हो सकती है।

7
एक क्लास लाइब्रेरी में .xaml और साथ ही (उपयोगकर्ता नियंत्रण) हो सकते हैं
डिफ़ॉल्ट

21

इन-शॉर्ट अंतर हैं

1) PCL के पास .NET Framework तक पूर्ण पहुँच नहीं है, जहाँ SharedProject के पास है।

2) प्लेटफ़ॉर्म विशिष्ट कोड के लिए #ifdef - आप PCL में नहीं लिख सकते हैं ( #ifdef विकल्प आपको PCL में उपलब्ध नहीं है क्योंकि इसे अलग से संकलित किया गया है, जैसा कि इसका अपना DLL है, इसलिए संकलन समय पर (#ifdef का मूल्यांकन किया जाता है) यह नहीं पता है कि यह किस प्लेटफ़ॉर्म का हिस्सा होगा। ) जहां साझा प्रोजेक्ट के रूप में आप कर सकते हैं।

3) प्लेटफ़ॉर्म विशिष्ट कोड को PCL में नियंत्रण के व्युत्क्रम का उपयोग करके प्राप्त किया जाता है, जहाँ #ifdef कथनों का उपयोग करके आप साझा प्रोजेक्ट में समान प्राप्त कर सकते हैं।

एक उत्कृष्ट लेख जो पीसीएल बनाम साझा परियोजना के बीच के अंतर को दिखाता है, निम्न लिंक पर पाया जा सकता है

http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/


18

पहले से लिखे गए अन्य की तरह, संक्षेप में:


कोड प्रोजेक्ट (फाइल) स्तर पर साझा पुन: उपयोग, फ़ोल्डर संरचना और संसाधनों के लिए भी अनुमति देता है

pcl
विधानसभा स्तर पर पुन: उपयोग

मेरे लिए यहां जवाबों से ज्यादातर गायब था। पीसीएल में उपलब्ध कार्यक्षमता में कमी के बारे में जानकारी है: एक उदाहरण के रूप में आपके पास सीमित फ़ाइल ऑपरेशन हैं (मैं एक ज़मरीन क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट में बहुत सारी फ़ाइल गुम कर रहा था)।

अधिक विस्तार से
साझा की गई परियोजना में :
+ कई प्लेटफार्मों को लक्षित करते समय # एआईएफ का उपयोग कर सकते हैं (जैसे कि ज़ामरीन आईओएस, एंड्रॉइड, विनफोन)
+ प्रत्येक लक्ष्य परियोजना के लिए उपलब्ध सभी रूपरेखा कार्यक्षमता (हालांकि सशर्त रूप से संकलित करना है)
ओ संकलन समय पर एकीकृत करता है
- थोड़ा बड़ा आकार परिणामी विधानसभाओं की
- विजुअल स्टूडियो 2013 अपडेट 2 या उच्चतर की आवश्यकता है

pcl :
+
विज़ुअल स्टूडियो के पुराने संस्करणों के साथ एक साझा असेंबली + प्रयोग करने योग्य बनाता है (2013 से पूर्व अद्यतन 2)
o गतिशील रूप से जुड़ा हुआ
- lmited कार्यक्षमता (इसके द्वारा संदर्भित सभी परियोजनाओं का सबसेट)

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

दोनों का मुख्य ध्यान तब है जब आप कई प्लेटफार्मों को लक्षित करते हैं, अन्यथा आप सामान्य रूप से सिर्फ एक साधारण पुस्तकालय / डीएलएल परियोजना का उपयोग करेंगे।


9

वीएस 2015 पुस्तक से सफलतापूर्वक

साझा परियोजनाएं कई परियोजना प्रकारों में कोड, संपत्ति और संसाधनों को साझा करने की अनुमति देती हैं। विशेष रूप से, निम्नलिखित परियोजना प्रकार साझा परियोजनाओं को संदर्भित और उपभोग कर सकते हैं:

  • कंसोल, विंडोज फॉर्म और विंडोज प्रेजेंटेशन फाउंडेशन।
  • विंडोज स्टोर 8.1 ऐप और विंडोज फोन 8.1 ऐप।
  • विंडोज फोन 8.0 / 8.1 सिल्वरलाइट ऐप्स।
  • पोर्टेबल कक्षा पुस्तकालय।

नोट: - दोनों साझा परियोजनाएं और पोर्टेबल क्लास लाइब्रेरीज़ (PCL) साझाकरण कोड, XAML संसाधन और संपत्ति की अनुमति देते हैं, लेकिन निश्चित रूप से कुछ अंतर हैं जिन्हें संक्षेप में निम्नानुसार किया जा सकता है।

  • एक साझा परियोजना एक पुन: प्रयोज्य विधानसभा का उत्पादन नहीं करती है, इसलिए इसका केवल समाधान के भीतर से ही उपभोग किया जा सकता है।
  • एक साझा परियोजना में प्लेटफ़ॉर्म-विशिष्ट कोड का समर्थन है, क्योंकि यह WINDOWS_PHONE_APP और WINDOWS_APP जैसे पर्यावरण चर का समर्थन करता है, जिसका उपयोग करके आप यह पता लगा सकते हैं कि आपका कोड किस प्लेटफ़ॉर्म पर चल रहा है।
  • अंत में, साझा परियोजनाओं में तीसरे पक्ष के पुस्तकालयों पर निर्भरता नहीं हो सकती है।
  • तुलना करके, एक PCL एक पुन: प्रयोज्य .dll लाइब्रेरी का निर्माण करता है और इसमें थर्ड-पार्टी लाइब्रेरी पर निर्भरता हो सकती है, लेकिन यह प्लेटफ़ॉर्म वातावरण चर का समर्थन नहीं करता है

7

कक्षा पुस्तकालय साझा संकलित कोड है।

साझा परियोजना साझा स्रोत कोड है।

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