2016-07-05 5 views
8

का उपयोग करने से पहले फ़ाइल प्लगइन पर EnsureLoaded को कॉल करना होगा, मैंने NuGet के माध्यम से संस्करण 4.2.0 से MvvmCross संस्करण 4.2.1 में अद्यतन किया है और अब एंड्रॉइड प्रोजेक्ट स्टार्टअप के दौरान क्रैश हो गया है। एक MvxException संदेश के साथ स्प्लैश स्क्रीन के दौरान फेंक दिया जाता है:आपको डाउनलोडकैच

MvvmCross.Platform.Exceptions.MvxException: आप DownloadCache

मैं वास्तव में इस बोल रहा हूँ उपयोग करने से पहले फ़ाइल प्लगइन पर EnsureLoaded कॉल करना होगा MvxAppCompatSetup.InitializeLastChance ओवरराइड में विधि। यह संस्करण 4.2.0 के साथ मेरे लिए अच्छा काम करता है, लेकिन संस्करण 4.2.1 चलाते समय कोड InitializeLastChance पर भी हिट नहीं करता है।

protected override void InitializeLastChance() 
{ 
    base.InitializeLastChance(); 
    MvvmCross.Plugins.File.PluginLoader.Instance.EnsureLoaded(); 
    MvvmCross.Plugins.DownloadCache.PluginLoader.Instance.EnsureLoaded(); 
} 

मैं क्योंकि प्लगइन्स अभी तक

प्रारंभ नहीं किया गया है क्योंकि वहाँ मैं एक अपवाद मिल जाएगा InitializeFirstChance को EnsureLoaded कॉल स्थानांतरित नहीं कर सकते प्रकार MvvmCross.Platform.Plugins.IMvxPluginManager को हल करने में विफल

MvxSetup.InitializePluginFrameworkInitializePluginFramework कहा जाता है जब यह अपवाद फेंक रहा प्रतीत होता है।

NuGet मैं अद्यतन के दौरान इंस्टॉल किए गए प्रत्येक प्लगइन के लिए त्रुटि संदेश प्रदर्शित:

[विफलता] फ़ाइल फ़ाइल नहीं कर सका ... \ Project.Droid \ Bootstap \ XXXBootstrap.cs '

फ़ाइलें निश्चित रूप से वहां हैं और पैकेज त्रुटि की रिपोर्ट किए बिना इंस्टॉल करता है।

इस समस्या को संभालने का सही तरीका क्या है? DownloadCachePluginBootstrap.cs दूर करने के लिए

उत्तर

5

प्रयास करें और FilePluginBootstrap.cs सिर्फ InitializeLastChance अंदर मैन्युअल सेटअप छोड़()। ऐसा लगता है कि लोडिंग ऑर्डर के साथ एक समस्या है।

+0

इस समस्या को ठीक लग रहा था। –

+0

बूटस्ट्रैप फ़ोल्डर से उपरोक्त फ़ाइलों को हटाकर ठीक है और विधि में लोडिंग ऑर्डर को स्पष्ट रूप से परिभाषित करें प्रारंभिकलास्टचेंस() यह समस्या को हल करने लगता है। InitializeLastChance के बारे में अधिक जानकारी आप [व्यक्तिगत अनुकूलन] पर देख सकते हैं (https: // github।कॉम/एमवीवीएमक्रॉस/एमवीवीएमक्रॉस/विकी/कस्टमाइजिंग-यूज-एप-एंड-सेटअप) – JohnnyJaxs

+1

उन लोगों के लिए जो अब एमवीएक्सएक्सप्शन का सामना कर रहे हैं: एमवीवीएमक्रॉस.प्लगिन.फाइल.प्लगिनलोडर के लिए प्लगइन लोडर नहीं मिला। यहां वर्णित थोड़ा लंबा वर्कअराउंड है https: //github.com/MvvmCross/MvvmCross-Plugins/issues/119#issuecomment-233129197 – foxanna

3

@Piotr जैसा कि बताया जा: DownloadCachePluginBootstrap.cs और FilePluginBootstrap.cs दूर करने के लिए

कोशिश सिर्फ InitializeLastChance अंदर मैन्युअल सेटअप छोड़()। ऐसा लगता है कि लोडिंग ऑर्डर के साथ समस्या है।

कि मेरे लिए भी समस्या का समाधान हो।

मैं सिर्फ आईओएस प्रोजेक्ट के Setup.cs में अपना कोड साझा करना चाहता हूं क्योंकि मुझे लगता है कि यह एक बेहतर कार्यान्वयन है। मैंने प्रारंभिक LastChance() का उपयोग नहीं किया। इसके बजाए, मैंने एडप्लगिन लोडर और लोडप्लगिन का उपयोग किया।

protected override void AddPluginsLoaders(MvxLoaderPluginRegistry registry) 
    { 
     registry.Register<MvvmCross.Plugins.File.PluginLoader, MvvmCross.Plugins.File.iOS.Plugin>(); 
     registry.Register<MvvmCross.Plugins.DownloadCache.PluginLoader, MvvmCross.Plugins.DownloadCache.iOS.Plugin>(); 
     base.AddPluginsLoaders(registry); 
    } 

    public override void LoadPlugins(IMvxPluginManager pluginManager) 
    { 
     pluginManager.EnsurePluginLoaded<MvvmCross.Plugins.File.PluginLoader>(); 
     pluginManager.EnsurePluginLoaded<MvvmCross.Plugins.DownloadCache.PluginLoader>(); 
     base.LoadPlugins(pluginManager); 
    } 
संबंधित मुद्दे