Atnaujinimas į naują „MVVMCross“ versiją gali sukelti kelis iššūkius dėl sistemos architektūros pokyčių, vardų srities atnaujinimų ir pakeitimų sulaužymo. Čia yra keletas bendrų problemų, su kuriomis susiduria tokių atnaujinimų metu:
1. Vardų srities pakeitimai **
„MVVMCross“ dažnai atnaujina vardų sritis tarp pagrindinių versijų. Pvz., Pereinant iš MVVMCROSS 5 į 6, „mvvmcross.core“ vardų sritis buvo atnaujinta į „Mvvmcross“, o `mvvmcross.core.navigation` tapo„ mvvmcross.navigation` [2]. Panašiai buvo modifikuotos papildinių vardų erdvės, tokios kaip keitimas iš „mvvmcross.plugins“ į „mvvmcross.plugin“ [2]. Šie pakeitimai reikalauja kruopščiai atnaujinti jūsų kodą, kad būtų užtikrintas suderinamumas.2. Priklausomybės ir papildinių problemos **
Atnaujinant, papildiniai ir priklausomybės gali būti netinkamai įkeliamos ar užregistruotos. Pavyzdžiui, jei susiduriate su problemomis, susijusiomis su tokiais tipais, kaip „IMVXMessenger“, gali būti dėl to, kad „Messenger“ papildinys nėra tinkamai įkeltas. Turite įsitikinti, kad visi būtini papildiniai yra įkelti į jūsų „sąrankos“ klasę [1].3. IOC konteinerių pakeitimai **
„MVVMCross“ priklausomybės injekcijai naudoja IOC konteinerį. Atnaujinimus gali reikėti pakoreguoti, kaip priklausomybės yra įregistruotos ar išspręstos. Jei naudojate pasirinktinį IOC konteinerį, gali tekti jį pritaikyti dirbant su nauja „MVVMCross“ versija [4].4. Sąrankos ir registravimo pakeitimų laužymas **
„MVVMCross 8“ reikšmingas pakeitimas yra reikalavimas aiškiai įgyvendinti savo „mvxsetup“ darinį. Tai apima su registracijos būdu susijusių metodų įgyvendinimą, nes MVVMCross nebeįtinka šių įsipareigojimų neįvykdymo įgyvendinimų [10].5. Konkrečios platformos sąrankos pakeitimai **
Kiekvienai platformai (pvz., „IOS“, „Android“) gali reikėti specialių sąrankos klasių, kurias reikia įgyvendinti atnaujinant. Pvz., Jums gali tekti naudoti „mvxiosetup“ „iOS“ arba „mvxandroidsetup“ „Android“ [10].6. Duomenų įrišimas ir MVVM modelio problemos **
Kartais atnaujinimai gali turėti įtakos duomenų surišimui, ypač jei keičiasi savybių pranešimas. UI atnaujinimų palaikymui labai svarbu užtikrinti, kad jūsų vaizdo modeliai teisingai įgyvendintų „inotifyPropertyChanged“ arba naudotis stebimomis savybėmis [9].7. .NET standarto ir Framework atnaujinimai **
Atnaujinimams dažnai reikia atnaujinti savo projektą į naujesnius .NET standartus ar sistemas. Pavyzdžiui, norint pereiti nuo MVVMCROSS 5 į 6, būtinas perėjimas prie .NET standarto 2.0 [2]. Tai gali apimti reikšmingus jūsų projekto struktūros ir priklausomybių pakeitimus.8. Migracija į naujus projekto stilius (pvz., SDK stilius) **
Kai migruojate į naujesnes sistemas, tokias kaip .NET Maui, jums gali tekti konvertuoti savo projektus į SDK stilių ir atlikti kitas migracijos užduotis rankiniu būdu [7].Apibendrinant galima pasakyti, kad „MVVMCross“ atnaujinimas apima vardų erdvės pakeitimų sprendimą, tinkamo papildinio ir priklausomybės įkėlimo užtikrinimą, pritaikymą naujiems IOC konteinerių reikalavimams, įgyvendinant konkrečias platformos nustatymo klases, išsprendžiant duomenų įrišimo problemas, atnaujinant naujesnius .NET standartus ir tvarkant projekto stiliaus migracijas. Kiekvienai iš šių sričių reikalauja kruopštaus dėmesio, kad būtų užtikrintas sklandus perėjimas prie naujos versijos.
Citatos:[1] https://stackoverflow.com/questions/68214000/mvvmcross-upgrade-from-6-4-2-to-8-0-1
[2] https://www.mvvmcross.com/documentation/upgrading/upgrade-to-mvvmcross-60
[3] https://www.mvvmcross.com/mvvmcross-5-release/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app ir-setup
[5] https://www.nuget.org/packages/mvvmcross/
[6] https://www.mvvmcross.com/documentation/fundamentals/data-dinding
[7] https://learn.microsoft.com/en-us/answers/questions/1346751/xamarin-forms-to-maui-migration-issues
[8] https://learn.microsoft.com/en-us/answers/questions/847430/unable-to-compile-xamarin-android-project-in-vs-20
[9] https://www.reddit.com/r/dotnetmaui/comments/103ai8p/mvvm_problems_having_troubles_with_data_bindings/
[10] https://www.mvvmcross.com/documentation/upgrading/upgrade-to-mvvmcross-80