6

विंडोज फोन 8 और विंडोज 8 के बीच कोड साझा करते समय, डेवलपर्स के लिए दो मुख्य विकल्प 1) विंडोज रनटाइम घटक और 2) पोर्टल क्लास लाइब्रेरीज़ हैं।पोर्टेबल कोड लाइब्रेरी बनाम विंडोज रनटाइम घटक चुनना

Windows Runtime Components WinRT का उपयोग करें और सभी समर्थित भाषाओं में अनुमान लगाया जा सकता है। अलग-अलग प्लेटफार्मों पर इस्तेमाल होने पर उन्हें अलग-अलग परियोजनाओं (बाइनरी) में लिंक की गई फाइलों की आवश्यकता होती है। हालांकि, वे उपलब्ध WinRT एपीआई का 9 0% हिस्सा साझा करते हैं।

Portable Class Libraries बीसीएल का एक सबसेट (कभी-कभी एक महत्वपूर्ण सबसेट) है जिसमें प्लेटफॉर्म पर बाइनरी संगतता है। वे WinRT अनुप्रयोगों पर, लेकिन यह भी सिल्वरलाइट, एक्सबॉक्स जैसे अन्य परियोजना प्रकार पर इस्तेमाल किया जा सकता आदि

जब एक डेवलपर एक "साझा रणनीति" जो परियोजना प्रकार जाने के लिए तकनीक सबसे अच्छा काम बंटवारे करना है चुन रहा है विंडोज फोन 8 और विंडोज 8 के बीच कोड? धन्यवाद।

+1

फिर स्रोत फ़ाइल लिंकिंग तकनीक भी है ... बिना WinRT घटक या पीसीएल के। –

+0

यह प्रश्न अब विजुअल स्टूडियो 2013 अपडेट 2 में विंडोज फोन 8.1 यूनिवर्सल ऐप्स के परिचय के साथ प्रासंगिक नहीं है जो साझा परियोजनाओं का समर्थन करता है। –

+0

@ जेरीनिक्सन-एमएसएफटी - यह ज्ञान का एक मजेदार मणि है, क्या आप इसे थोड़ा सा विस्तार कर सकते हैं? एक 'sahred परियोजना' कैसे काम करता है और यह किस समस्या को हल करता है? –

उत्तर

3

यदि आप विंडोज फोन 8 और विंडोज 8 के बीच कोड साझा करना चाहते हैं, तो आप विंडोज रनटाइम घटक का उपयोग नहीं कर सकते हैं, क्योंकि विंडोज 8 के लिए अलग-अलग घटक हैं और विंडोज फोन 8 के लिए अलग-अलग हैं और वे अदला-बदले नहीं हैं।
मैं पोर्टेबल क्लास लाइब्रेरीज़ के लिए कुछ सरल जेनेरिक पुस्तकालयों के लिए या लिंक के माध्यम से कोड साझा करने और #if WP8 संकलन निर्देशों के लिए जाऊंगा - यह सिर्फ काम करता है और पोर्टेबल libs से अधिक शक्तिशाली है।
यह भी ध्यान रखें कि एमवीवीएम लाइट जैसी अधिकांश बाहरी पुस्तकालयों को पोर्टेबल लिब्स में संदर्भित नहीं किया जा सकता है, इसलिए यदि आप उनका उपयोग करना चाहते हैं, तो आपको फ़ाइल संदर्भों के माध्यम से कोड साझाकरण का उपयोग करना होगा।

+3

वास्तव में, एमवीवीएम लाइट का एक पीसीएल संस्करण है - NuGet पैकेज पोर्टेबल है। एमवीवीएमलाइटलिब्स और स्रोत यहां है: http: //mvvmlight.codeplex.com/SourceControl/network/forks/onovotny/MvvmLightPortable/ –

+2

@ मार्टिन सुचान - "अगर आप विंडोज फोन 8 और विंडोज 8 के बीच कोड साझा करना चाहते हैं, तो आप विंडोज रनटाइम घटक का उपयोग नहीं कर सकते ..." _share code_ द्वारा आपके द्वारा क्या मतलब है इस पर निर्भर करता है। आप एक ** सिंगल ** डब्लूआरसी प्रोजेक्ट नहीं बना सकते जो WinRT और WP8 दोनों को लक्षित करता है, लेकिन आप प्रत्येक ** के लिए ** एक बना सकते हैं, और दोनों प्रोजेक्ट एक ही सी/सी ++ स्रोत कोड का संदर्भ दे सकते हैं। –

+0

@ मार्टिन सुचान और @ स्कॉट स्मिथ, [क्या आप निश्चित हैं] (http://s2.postimg.org/gm9wext2x/Win_Runtime_Comp_Portable.png)? क्योंकि 'विंडोज रनटाइम घटक (यूनिवर्सल विंडोज 8.1 के लिए पोर्टेबल)' टेम्पलेट विकल्प है। विवरण कहता है "विंडोज़ और विंडोज फोन ऐप के लिए एक प्रबंधित विंडोज रनटाइम घटक बनाने के लिए एक परियोजना, प्रोग्रामिंग भाषाओं के बावजूद, जिसमें ऐप्स लिखे गए हैं"। – bunkerdive

4

यह आप क्या साझा कर के रूप की जरूरत है निर्भर करता है:

1) आप एक आम सी ++ व्यापार तर्क परत तुम दोनों विंडोज फोन और विंडोज स्टोर एप्लिकेशन को यह बेनकाब करने के लिए विंडोज रनटाइम (WinRT) घटकों का उपयोग कर सकते हैं (यह विंडोज फोन के लिए एकमात्र उपयोग-मामला है क्योंकि आप जावास्क्रिप्ट का उपयोग करके एक WP8 ऐप नहीं लिख सकते हैं या WinRT घटक लिखने के लिए .NET का उपयोग नहीं कर सकते हैं)।

आपको दो अलग WinRT घटकों का निर्माण करना होगा, हालांकि फोन के लिए एक और विंडोज स्टोर के लिए एक। मंच विशिष्ट कोड को चिह्नित करने के लिए प्रीप्रोसेसर निर्देश (#if) का उपयोग करके अपने WinRT इंटरऑप परत के C++/CX कोड को साझा करना संभव होना चाहिए।

2) आपके पास सी #/वीबी में व्यावसायिक तर्क है कि केवल पोर्टेबल क्लास लाइब्रेरी में उपलब्ध .NET API पर निर्भरता है। फिर आप उस तर्क को रखने के लिए पोर्टेबल क्लास लाइब्रेरी (पीसीएल) का उपयोग कर सकते हैं। असल में यदि आप अपनी लाइब्रेरी को पीसीएल डीएलएल में बना सकते हैं तो यह काम करना चाहिए। इसके बाद आप विंडोज फोन और विंडोज स्टोर ऐप दोनों में बाइनरी फॉर्म में इस पीसीएल का संदर्भ दे सकते हैं।

हालांकि मार्टिन ने कहा है कि आपको तीसरे पक्ष के पुस्तकालयों का उपयोग करते समय देखभाल करने की आवश्यकता है क्योंकि इन्हें पीसीएल के लिए भी बनाया जाना चाहिए। कुछ तृतीय पक्ष पुस्तकालय पहले ही पीसीएल फॉर्म (उदाहरण के लिए JSON.NET) में उपलब्ध हैं।

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

1

कैसे प्रभावी रूप से प्लेटफार्मों के बीच कोड साझा करने के लिए पोर्टेबल कक्षा पुस्तकालय का उपयोग करने पर कुछ मार्गदर्शन के लिए, इस ब्लॉग पोस्ट देखें: How to Make Portable Class Libraries Work for You

1

यह सवाल नहीं रह गया है में Windows फोन 8.1 यूनिवर्सल एप्लिकेशन की शुरूआत के साथ प्रासंगिक है विजुअल स्टूडियो 2013 अपडेट 2 जो साझा परियोजनाओं का समर्थन करता है।

मेरे लिए के रूप में, कुछ देर प्रतीक्षा भी विजुअल स्टूडियो 2013 अद्यतन 4 इस सवाल में क्योंकि वहाँ वहाँ परियोजनाओं के दो प्रकार हैं अभी भी प्रासंगिक है:

कक्षा लाइब्रेरी (यूनिवर्सल Apps के लिए पोर्टेबल) - पीसीएल

और

विंडोज रनटाइम घटक (यूनिवर्सल Apps के लिए पोर्टेबल) - WinMD

मैं उनके बीच केवल एक बड़ा अंतर देख सकता हूं: WinMD केवल WinRT का उपयोग करता है और पीसीएल का उपयोग नेट और सिल्वरलाइट के साथ भी किया जा सकता है। लेकिन मैं यह जानना चाहता हूं कि कौन सा और कब चुनना बेहतर है।

+0

विजुअल स्टूडियो 2014 सामुदायिक संस्करण निःशुल्क है। और, विजुअल स्टूडियो 2015 सामुदायिक संस्करण मुफ़्त होगा। यदि आप अपनी स्थिति की अनुमति देता है तो मैं आपको विजुअल स्टूडियो को अपडेट करने की सलाह देता हूं। –

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

  • कोई संबंधित समस्या नहीं^_^