Upgradování na novou verzi MVVMCross může přinést několik výzev kvůli změnám v architektuře rámce, aktualizací na jmenný prostor a porušování změn. Zde jsou některé běžné problémy, kterým během takových upgradů čelí:
1. Změny názvů **
MVVMCross často aktualizuje jmenné prostory mezi hlavními verzemi. Například při přechodu z mvvmcross 5 na 6 byl jmenný prostor `mvvmcross.core` aktualizován na` mvvmcross` a `mvvmcross.core.navigation` se stal` mvvmcross.navigation` [2]. Podobně byly upraveny názvy pluginů, jako je změna z `mvvmcross.plugins` na` mvvmcross.plugin` [2]. Tyto změny vyžadují pečlivé aktualizace vašeho kódu, aby byla zajištěna kompatibilita.2. Problémy s závislostí a pluginem **
Při upgradu nemusí být pluginy a závislosti správně načteny nebo registrovány. Například, pokud narazíte na problémy s řešením typů, jako je `imvXMessenger`, může to být způsobeno tím, že se plugin Messenger nebude správně načten. Musíte zajistit, aby všechny potřebné pluginy byly načteny ve vaší třídě „Setup“ [1].3. Změny kontejneru IOC **
MVVMCross používá pro injekci závislosti kontejner IOC. Upgrady mohou vyžadovat úpravy, jak jsou závislosti registrovány nebo vyřešeny. Pokud používáte vlastní kontejner IOC, možná budete muset přizpůsobit jej, aby pracoval s novou verzí MVVMCross [4].4. porušení změn v nastavení a protokolování **
V MVVMCROSS 8 je významnou změnou požadavkem explicitní implementace vašeho vlastního derivátu `mvxsetup`. To zahrnuje implementaci metod souvisejících s protokolováním, protože MVVMCross již pro ně neposkytuje výchozí implementace [10].5. Změny nastavení specifické pro platformu **
Každá platforma (např. IOS, Android) může vyžadovat implementaci konkrétních tříd nastavení při upgradu. Například možná budete muset použít pro iOS nebo `mvxAndroidSetup` pro Android [10].6. Problémy s vazbou dat a vzorec MVVM **
Někdy mohou upgrady ovlivnit to, jak funguje vazba dat, zejména pokud dojde ke změnám v tom, jak jsou vlastnosti upozorněny. Pro udržování aktualizací uživatelského rozhraní [9] je zásadní zajistit, aby vaše modely pohledu byly správně implementovány „inotifyProperTyChange“ nebo použitelné pozorovatelné vlastnosti.7. .NET Standard and Framework Aktualizace **
Upgrady často vyžadují aktualizaci vašeho projektu na novější .NET standardy nebo rámce. Například přechod z MVVMCross 5 na 6 vyžadoval přechod na standard .NET 2.0 [2]. To může zahrnovat významné změny ve struktuře projektu a závislosti.8. Migrace do nových projektových stylů (např. SDK styl) **
Při migraci do novějších rámců, jako je .net Maui, možná budete muset své projekty převést na styl SDK a zvládnout další migrační úkoly ručně [7].Stručně řečeno, upgrade MVVMCross zahrnuje řešení změn na jmenné prostoru, zajištění správného pluginu a závislosti načítání, přizpůsobení novým požadavkům na kontejnery IOC, implementaci tříd nastavení specifické pro platformu, řešení problémů s vazbou dat, aktualizace na novější standardy .NET a migrace stylu projektu. Každá z těchto oblastí vyžaduje pečlivou pozornost, aby zajistila hladký přechod na novou verzi.
Citace:[1] https://stackoverflow.com/questions/68214000/mvvmcross-pgrade-from-6-4-2--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-and-setup
[5] https://www.nuget.org/packages/mvvmcross/
[6] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[7] https://learn.microsoft.com/en-us/answers/questions/1346751/xamarin-forms-tomaui-migration-issues
[8] https://learn.microsoft.com/en-us/answers/questions/847430/unable-to-comple-xamarin-dord-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