2013-05-09 5 views
11

के लिए सर्वश्रेष्ठ पीसीएल प्रोफ़ाइल की तलाश में मैं अपने ऐप के लिए समर्थित प्लेटफार्मों की संख्या बढ़ाने पर काम कर रहा हूं, यह .NET4/Windows Store/Windows Phone का समर्थन करता था, लेकिन मुझे एंड्रॉइड के लिए मोनो को भी कवर करने की उम्मीद है और आईओएस। मैंने पोर्टेबल क्लास लाइब्रेरीज़ (पीसीएल) में सभी बिजनेस लॉजिक, मॉडल और मॉडलों को देखा है, लेकिन यह एक बड़ी दुविधा है जो मुझे प्लेटफॉर्म के सबसेट को लक्षित करना चाहिए। प्रत्येक संयोजन कुछ विफल होने का कारण बनता है। यहां 4 प्लेटफार्मों के परिणाम दिए गए हैं जिनका उपयोग मैं कर सकता हूं:क्रॉस-प्लेटफॉर्म विकास

प्रोफ़ाइल 78 (नेट 45 + WP8 + स्टोर): टीपीएल, प्रतीक्षा/एसिंक के साथ कोई समस्या नहीं है और कॉलरमेम्बरनाम विशेषता के लिए समर्थन (बाइंडबलबेस दृश्य मॉडल बेस क्लास में उपयोग किया जाता है)। लेकिन मोनो.Android प्रोजेक्ट जो इस तरह की लाइब्रेरी को संदर्भित करता है, गैर-मौजूदा सिस्टम के बारे में शिकायत करने में विफल रहता है। Runtime.dll जिसे संदर्भित किया जाना चाहिए।

प्रोफ़ाइल 104 (नेट 45 + एसएल 4 + WP75 + स्टोर): प्रतीक्षा/एसिंक काम नहीं करता है, कॉलरमेम्बर नाम नहीं मिला है, लेकिन अगर मैं उन सभी संदर्भों को हटा देता हूं, तो एंड्रॉइड प्रोजेक्ट ठीक बनाता है।

प्रोफाइल 147 (नेट 403 + एसएल 5 + डब्ल्यूपी 8 + स्टोर): प्रतीक्षा/एसिंक काम नहीं करता है, कॉलरमेम्बर नाम नहीं मिला है, लेकिन अगर मैं उन सभी संदर्भों को हटा देता हूं, तो एंड्रॉइड प्रोजेक्ट ठीक बनाता है।

प्रोफ़ाइल 158 (नेट 45 + एसएल 5 + WP8 + स्टोर): प्रतीक्षा/एसिंक काम नहीं करता है, कॉलरमेम्बर नाम नहीं मिला है, लेकिन अगर मैं उन सभी संदर्भों को हटा देता हूं, तो एंड्रॉइड प्रोजेक्ट ठीक बनाता है।

तो मुझे सच में यकीन नहीं है कि क्या चुनना है। प्रोफाइल 78, 104, 147 सीमित हैं, प्रोफ़ाइल 78 एकमात्र ऐसा है जो प्रतीक्षा/एसिंक और कॉलरमेम्बरनाम दोनों का समर्थन करता है बाइंडबलबेस का उपयोग करता है, लेकिन यह एंड्रॉइड पर System.Runtime.dll के बारे में शिकायत करने में विफल रहता है। तो यदि आपके पास पीसीएल प्रोफाइल के साथ एक अनुभव है जो पीसीएल को मोनो को लक्षित करने का सबसे अच्छा मैच है, तो कृपया अपने विचार साझा करें।

+0

'माइक्रोसॉफ्ट.बीक्ल.एसिंक' (जो 'माइक्रोसॉफ्ट.बीक्ल' पर निर्भर करता है) का उपयोग करना सुनिश्चित करें। ये async/await/CallerMemberName प्रोफाइल के लिए समर्थन 104/147/158 जोड़ें। –

+0

माइक्रोसॉफ्ट.बीक्ल.एसिंक को केवल विंडोज प्लेटफार्म (अब तक) पर वितरित किया जा सकता है। नहीं मोनो –

+0

@VagifAbilov लाइसेंसिंग को माइक्रोसॉफ्ट.बीक्ल.एसिंक पर बदल दिया गया है http://www.hanselman.com/blog/PortableClassLibrariesJustGotREALLYUsefulWithNewLicensingChanges.aspx –

उत्तर

11

प्रोफ़ाइल संख्याओं के बारे में सोचना मुश्किल है - मैं प्लेटफ़ॉर्म के संदर्भ में सोचना पसंद करता हूं।

आदर्श रूप में मैं समर्थन करने के लिए अपनी परियोजनाओं में खुशी होगी:

  • नेट 3.5 और उच्चतर
  • SL3 और उच्च
  • WP7.x फोन और उच्च
  • MonoDroid 1.6 और उच्चतर
  • मोनो टच आईओएस 6 और उच्च
  • (मैक डेस्कटॉप ओएसएक्स शेर)

मुख्य पीसीएल प्रोजेक्ट जो मैं समर्थन करता हूं वह एमवीएमएमक्रॉस है - जिसके लिए आईसीएमएमएंड की तरह एमवीवीएम की सुविधा की आवश्यकता होती है।

  • नेट 3.5 और उच्चतर नेट 4.5: इन सुविधाओं ... कि एक कठिन सीमा है नेट 4.5 और बाद के लिए प्लेटफार्मों में ही उपलब्ध हैं - - कुछ भी नहीं मैं इसके बारे में क्या कर सकते हैं तो मेरी जरूरतों में परिवर्तन
  • SL3 और उच्च SL4 और उच्च
  • WP7.x फोन और उच्च
  • MonoDroid 1।104 (पता नहीं कैसे मंच इस निर्णय लिया - 6 और उच्च
  • MonoTouch iOS6 और उच्च
  • (मैक डेस्कटॉप OSX शेर)
स्थान पर इस चयन के साथ

, तो यह मेरे लिए एक प्रोफ़ाइल नंबर की ओर जाता है। .. बहुत समय पहले पूछना छोड़ दिया!)

तो मैंने प्रोफ़ाइल 104 पर एमवीवीएमक्रॉस को लक्षित किया है - और यह वहां रहेगा जबकि WP7.x समर्थन की आवश्यकता है।

यह चयन मतलब MvvmCross नहीं बाहर के बॉक्स async/await और CallerMemberName तरह समर्थन बातें कर सकते हैं कि करता है - लेकिन यह एक समझौता हम बनाने के लिए तय कर लिया है है - हम उन है जो जरूरत WP7।


हालांकि, कुछ लोगों के बारे में पूछ रहे हैं इंतजार/async ...

इन नई सुविधाओं का उपयोग करने के लिए, वहाँ कुछ BCL.Async Nuget उन्हें प्रोफ़ाइल 104 में काम करने के लिए हैक करता ... या इन कर रहे हैं उपयोगकर्ता अपने ऐप्स को एक नई प्रोफ़ाइल पर लक्षित कर सकते हैं (वह जो WP7.x और SL4 का समर्थन नहीं करता है) - इससे उन्हें प्रोफ़ाइल 78 में अपने ऐप्स बनाने के लिए प्रेरित किया जाता है, लेकिन मेरी प्रोफ़ाइल 104 असेंबली में संदर्भ जोड़ने के लिए।

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


मैं मध्यम अवधि कि MvvmCross WP7 के लिए समर्थन छोड़ देंगे में उम्मीद एक्सएक्स और एसएल 4। जब ऐसा होता है, हम भी प्रोफ़ाइल में 78.


केवल अन्य बड़े मंच मुझे पता है कि पीसीएल समर्थन शुरू कर दिया है ReactiveUI है मुख्य लाइब्रेरीज स्थानांतरित कर सकते हैं। मेरा मानना ​​है कि यह मंच प्रोफाइल 78 का उपयोग करना चाहिए क्योंकि माइक्रोसॉफ्ट से प्रतिक्रियाशील का पीसीएल संस्करण 78 को लक्षित कर रहा है।

+0

धन्यवाद स्टुअर्ट, हमेशा के रूप में महान जवाब। मुझे यह जांचना है कि मेरे ऐप के लिए बाइंडबलबेस कितना महत्वपूर्ण है। मुझे लगता है कि आपने MvvmCross में इसके लिए कुछ प्रतिस्थापन की योजना बनाई है। –

+0

डुनो - बाइंडबलबेस क्या है? क्या यह सिर्फ'gerMemberName' विधियों के साथ https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross/ViewModels/MvxNotifyPropertyChanged.cs जोड़ा गया है? SetProperty (संदर्भ टी भंडारण, टी मूल्य, [CallerMemberName] स्ट्रिंग प्रॉपर्टी = नल) तो यह MvxNotifyPropertyChanged से भी अधिक है: – Stuart

+1

BindableBase का अनिवार्य हिस्सा है। –