Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud chcete migrovat Xamarin.Forms aplikaci do jediného projektu . NET Multiplatformní uživatelské rozhraní aplikace (.NET MAUI), musíte:
- Aktualizujte svou Xamarin.Forms aplikaci pro použití Xamarin.Forms 5.
- Aktualizujte závislosti aplikace na nejnovější verze.
- Ujistěte se, že aplikace stále funguje.
- Vytvoření aplikace .NET MAUI
- Zkopírujte kód a konfiguraci z Xamarin.Forms aplikace do aplikace .NET MAUI.
- Zkopírujte prostředky z aplikace Xamarin.Forms do aplikace .NET MAUI.
- Aktualizovat jmenné prostory.
- Řešte jakékoliv změny API.
- Upgradujte nebo nahraďte nekompatibilní závislosti verzemi .NET 8.
- Zkompilujte a otestujte svou aplikaci.
Pro zjednodušení procesu upgradu byste měli vytvořit novou aplikaci .NET MAUI se stejným názvem jako vaše Xamarin.Forms aplikace a pak zkopírovat kód, konfiguraci a prostředky. Toto je přístup uvedený níže.
Aktualizujte svou Xamarin.Forms aplikaci
Než upgradujete svou aplikaci Xamarin.Forms na .NET MAUI, měli byste nejprve aktualizovat svou aplikaci Xamarin.Forms tak, aby používala Xamarin.Forms 5 a ujistit se, že stále funguje správně. Kromě toho byste měli aktualizovat závislosti, které vaše aplikace používá, na nejnovější verze.
Toto pomůže zjednodušit zbytek migračního procesu, protože minimalizuje rozdíly v API mezi Xamarin.Forms a .NET MAUI a zajistí, že používáte verze vašich závislostí kompatibilní s .NET, pokud existují.
Vytvoření aplikace .NET MAUI
V sadě Visual Studio vytvořte novou aplikaci .NET MAUI se stejným názvem jako vaše Xamarin.Forms aplikace:
Otevřením souboru projektu potvrdíte, že máte projekt ve stylu sady .NET SDK.
Kopírování kódu do aplikace .NET MAUI
Veškerý kód pro různé platformy z Xamarin.Forms projektu knihovny by se měl zkopírovat do projektu aplikace .NET MAUI v identicky pojmenovaných složkách a souborech.
Vlastní renderery je možné použít buď v aplikaci .NET MAUI, nebo migrovat do obslužné rutiny .NET MAUI. Další informace najdete v tématu Opětovné použití vlastních rendererů v rozhraní .NET MAUI a migrace vlastního Xamarin.Forms rendereru do obslužné rutiny .NET MAUI.
Efekty je možné znovu použít v aplikaci .NET MAUI. Další informace naleznete v tématu Opakované použití efektů.
Poznámka:
Můžete rychle aktualizovat své Xamarin.Forms
oborové názvy na Microsoft.Maui
pomocí rychlých akcí ve Visual Studio, pokud máte nainstalovaný Upgrade Assistant.
Kód specifický pro platformu
Projekt aplikace .NET MAUI obsahuje složku Platformy s každou podřízenou složkou představující platformu, na kterou může .NET MAUI cílit:
Složky pro každou platformu obsahují prostředky specifické pro platformu a kód, který spustí aplikaci na každé platformě:
Do těchto složek by měl být zkopírován kód a jejich složky obsahující z vašich hlavních projektů Xamarin.Forms.
Kód z hlavního Xamarin.Forms projektu Androidu by se měl zkopírovat do složky Platform\Android projektu aplikace .NET MAUI. Kromě toho zkopírujte libovolný vlastní kód z vašich Xamarin.Forms
MainActivity
aMainApplication
tříd do stejných tříd v projektu aplikace .NET MAUI.Kód z hlavního Xamarin.Forms projektu iOS by se měl zkopírovat do složky Platforms\iOS projektu aplikace .NET MAUI. Kromě toho zkopírujte libovolný vlastní kód z vaší Xamarin.Forms
AppDelegate
třídy do stejné třídy v projektu aplikace .NET MAUI.Poznámka:
Seznam zásadních změn v .NET pro iOS najdete v tématu Zásadní změny v .NET pro iOS.
Kód z hlavního Xamarin.Forms projektu UPW by se měl zkopírovat do složky Platforms\Windows projektu aplikace .NET MAUI. Kromě toho zkopírujte libovolný vlastní kód z vaší Xamarin.Forms
App
třídy do stejné třídy v projektu aplikace .NET MAUI.
V době sestavení systém sestavení obsahuje kód pouze z každé složky při sestavování pro danou konkrétní platformu. Když například sestavíte soubory pro Android ve složce Platformy\Android , budou součástí balíčku aplikace, ale soubory v ostatních složkách Platformy nebudou. Tento přístup používá více cílení na více platforem z jednoho projektu. Aplikace .NET MAUI můžou být také více cílené na základě vašich vlastních kritérií názvu souboru a složky. Díky tomu můžete projekt aplikace .NET MAUI strukturovat tak, abyste nemuseli kód platformy umístit do podřízených složek složky Platformy . Další informace najdete v tématu Konfigurace multicílení.
Kopírování konfigurace do aplikace .NET MAUI
Každá platforma používá vlastní soubor manifestu nativní aplikace k určení informací, jako je název aplikace, ID, verze a další. Jeden projekt .NET MAUI umožňuje zadat tato běžná data aplikace v jednom umístění v souboru projektu.
Pokud chcete zadat data manifestu sdílené aplikace pro projekt, klikněte pravým tlačítkem na projekt v Průzkumníku řešení a pak zvolte Vlastnosti. Název aplikace, ID a verze je pak možné zadat v MAUI Shared > General:
V době sestavení se data manifestu sdílené aplikace sloučí s daty specifických pro platformu v souboru manifestu nativní aplikace, aby se vytvořil soubor manifestu balíčku aplikace. Další informace najdete v tématu Konfigurace projektu v .NET MAUI – MAUI Sdílené.
Zbývající data z manifestů aplikace Xamarin.Forms by se měla zkopírovat do manifestu aplikace .NET MAUI:
- V Androidu zkopírujte veškerá další data ze souboru AndroidManifest.xml v Xamarin.Forms hlavním projektu Androidu do souboru Platformy\Android\AndroidManifest.xml v projektu aplikace .NET MAUI.
- V iOSu zkopírujte veškerá další data ze souboru Info.plist v hlavním projektu iOS Xamarin.Forms do souboru Platforms\iOS\Info.plist v projektu aplikace .NET MAUI. Kromě toho zkopírujte soubor Xamarin.Forms v hlavním projektu iOS do složky Platforms\iOS v projektu aplikace .NET MAUI.
- Ve Windows zkopírujte další data ze souboru Package.appxmanifest v Xamarin.Forms hlavním projektu UPW do souboru Platforms\Windows\Package.appxmanifest v projektu aplikace .NET MAUI.
Kopírujte prostředky do aplikace .NET MAUI
Projekt .NET MAUI umožňuje, aby byly soubory prostředků ukládány do jednoho umístění a využívány na jednotlivých platformách. To zahrnuje písma, obrázky, ikonu aplikace, úvodní obrazovku při spuštění, nekomprimované prostředky a soubory CSS pro stylování aplikací .NET MAUI.
Soubory prostředků by se obvykle měly umístit do složky Zdroje projektu aplikace .NET MAUI nebo do podřízených složek složky Prostředky a musí mít správně nastavenou akci sestavení. Následující tabulka uvádí akce vytváření pro každý typ souboru prostředků.
Zdroj | Akce sestavení |
---|---|
Ikona aplikace | MauiIcon |
Písma | MauiFont |
Obrázky | MauiImage |
Úvodní obrazovka | MauiSplashScreen |
Nezpracované prostředky | MauiAsset |
Soubory CSS | MauiCss |
Poznámka:
Soubory XAML se také ukládají do projektu aplikace .NET MAUI a automaticky se přiřazují akci sestavení MauiXaml . Do složky Zdroje projektu aplikace se ale obvykle umístí jenom slovníky prostředků XAML.
Následující snímek obrazovky ukazuje typickou složku Resources obsahující podřízené složky pro každý typ prostředku:
Akce sestavení pro soubor prostředků bude správně nastavena, pokud byl prostředek přidán do správné podřízené složky Resources .
Důležité
Prostředky specifické pro platformu přepíší sdílené prostředky. Pokud máte například image specifickou pro Android umístěnou na platformě\Android\Resources\drawable-xhdpi\logo.pnga poskytnete také sdílený obrázek Resources\Images\logo.svg , použije se soubor SVG (Scalable Vector Graphics) k vygenerování požadovaných imagí Androidu s výjimkou image XHDPI, která už existuje jako obrázek specifický pro platformu.
Ikony aplikací
Ikona Xamarin.Forms aplikace by se měla přidat do projektu aplikace .NET MAUI přetažením obrázku do složky Resources\AppIcon projektu, kde se její akce sestavení automaticky nastaví na MauiIcon. V době sestavení se ikona aplikace změní na správné velikosti cílové platformy a zařízení. Ikony aplikací se mění na několik rozlišení, protože mají více použití, včetně toho, že se používají k reprezentaci aplikace na zařízení a v App Storu.
Další informace najdete v tématu Přidání ikony aplikace do projektu aplikace .NET MAUI.
Úvodní obrazovka
Pokud má vaše Xamarin.Forms aplikace úvodní obrazovku, měla by se přidat do projektu aplikace .NET MAUI přetažením obrázku do složky Resources\Splash projektu, kde se její akce sestavení automaticky nastaví na MauiSplashScreen. V době sestavení se obrázek úvodní obrazovky změní na správnou velikost cílové platformy a zařízení.
Další informace najdete v tématu Přidání úvodní obrazovky do projektu aplikace .NET MAUI.
Obrázky
Zařízení mají řadu velikostí obrazovky a hustoty a každá platforma má funkce pro zobrazování obrázků závislých na hustotě. V Xamarin.Formspřípadě obrázků závislých na hustotě jsou obvykle umístěny v hlavních projektech a přijímají zásady vytváření názvů specifické pro platformu. Existují dva přístupy, které je možné provést při migraci těchto imagí do .NET MAUI.
Doporučeným přístupem je zkopírovat verzi každého obrázku s nejvyšším rozlišením z vašeho Xamarin.Forms řešení do projektu aplikace .NET MAUI tak, že ji přetáhnete do složky Resources\Images projektu, kde se její akce sestavení automaticky nastaví na MauiImage. Bude také nutné nastavit BaseSize
atribut každého rastrového obrázku, aby se zajistilo, že dojde ke změně velikosti. To eliminuje nutnost mít na každé platformě více verzí jednotlivých imagí. V době sestavení se pak všechny image změní na několik imagí závislých na hustotě, které splňují požadavky platformy. Další informace najdete v tématu Přidání obrázků do projektu aplikace .NET MAUI.
Alternativně můžete z Xamarin.Forms vašeho řešení zkopírovat obrázky závislé na hustotě do shodně pojmenovaných složek ve složce Platformy\{Platforma} projektu aplikace .NET MAUI a nastavit jejich akce sestavení na akce sestavení, které se používají ve vašem Xamarin.Forms řešení. Následující tabulka uvádí ukázková umístění obrázků pro Xamarin.Forms řešení a jejich ekvivalentní umístění v projektu aplikace .NET MAUI:
Xamarin.Forms umístění obrázku | Umístění obrázku .NET MAUI | Akce sestavení obrazu pro platformu .NET MAUI |
---|---|---|
{MyApp.Android}\Resources\drawable-xhdpi\image.png | Platformy\Android\Resources\drawable-xhdpi\image.png | AndroidResource |
{MyApp.iOS}\image.jpg | Platformy\iOS\Resources\image.jpg | BundleResource |
{MyApp.UWP}\Assets\Images\image.gif | Platformy\Windows\Assets\Images\image.gif | Obsah |
Za předpokladu, že jste přijali stejnou konvenci vytváření názvů imagí, jakou jste použili ve svém Xamarin.Forms řešení, zvolí se příslušná image za běhu na základě možností zařízení. Nevýhodou tohoto přístupu je, že na každé platformě máte stále více verzí jednotlivých imagí.
Písma
Všechna písma z vašeho Xamarin.Forms řešení je možné přidat do řešení .NET MAUI tak, že je přetáhnete do složky Resources\Fonts projektu aplikace .NET MAUI, kde se jejich akce sestavení automaticky nastaví na MauiFont.
Další informace najdete v tématu Písma.
Soubory CSS
Všechny soubory CSS z vašeho Xamarin.Forms řešení je možné přidat do řešení .NET MAUI tak, že je přetáhnete do identické složky a nastavíte akci sestavení na MauiCss v okně Vlastnosti .
Další informace o používání souborů CSS v aplikaci .NET MAUI najdete v tématu Styl aplikace využívající šablony stylů CASCADING.
Nezpracované prostředky
Všechny nezpracované soubory assetů, jako je HTML, JSON a video, by se měly zkopírovat z vašeho Xamarin.Forms řešení do projektu aplikace .NET MAUI tak, že je přetáhnete do složky Resources\Raw projektu, kde se jejich akce sestavení automaticky nastaví na MauiAsset.
Lokalizované prostředky
V aplikaci .NET MAUI se řetězce lokalizují pomocí stejného přístupu jako v Xamarin.Forms aplikaci. Proto by se vaše soubory prostředků .NET (.resx) měly zkopírovat z vašeho Xamarin.Forms řešení do identické pojmenované složky v řešení .NET MAUI. Pak musí být zadán neutrální jazyk vaší aplikace .NET MAUI. Další informace najdete v tématu Určení neutrálního jazyka aplikace.
Poznámka:
Soubory prostředků .NET nemusí být umístěné ve složce Zdroje projektu aplikace .NET MAUI.
V aplikaci .NET MAUI se obrázky lokalizují pomocí stejného přístupu jako v Xamarin.Forms aplikaci. Proto by se lokalizované obrázky a složky, ve kterých se nacházejí, měly zkopírovat z vašeho Xamarin.Forms řešení do projektu aplikace .NET MAUI:
- Kořenová složka v projektu aplikace .NET MAUI pro lokalizované obrázky v Androidu je Platform\Android\Resources.
- V iOSu je kořenová složka v projektu aplikace .NET MAUI pro lokalizované obrázky Platform\iOS\Resources.
- Kořenová složka v projektu aplikace .NET MAUI pro lokalizované obrázky ve Windows je Platforms\Windows\Assets\Images.
Lokalizované obrázky by měly mít akce sestavení nastavené na ty, které se používají ve vašem Xamarin.Forms řešení. Další informace naleznete v tématu Lokalizace obrázků.
V aplikaci .NET MAUI se názvy aplikací lokalizují pomocí stejného přístupu jako v Xamarin.Forms aplikaci:
- V Systému Android lze lokalizovaný název aplikace uložit pomocí konvence pojmenování na základě složky ve složce Platforms\Android\Resources . Složky a soubory lokalizace názvu aplikace by se měly zkopírovat do této složky z vašeho Xamarin.Forms řešení.
- V iOSu se lokalizovaný název aplikace ukládá pomocí konvence pojmenování na základě složky ve složce Platforms\iOS\Resources . Složky a soubory lokalizace názvu aplikace by se měly zkopírovat do této složky z vašeho Xamarin.Forms řešení.
- Ve Windows je lokalizovaný název aplikace uložený v manifestu balíčku aplikace.
Další informace najdete v tématu Lokalizace názvu aplikace. Další informace o lokalizaci aplikací .NET MAUI najdete v tématu Lokalizace.
Změny jmenného prostoru
Jmenné prostory se změnily při přechodu z Xamarin.Forms na .NET MAUI a funkce Xamarin.Essentials jsou nyní součástí .NET MAUI. Pro provedení aktualizací oborů názvů vyhledejte a nahraďte následující obory názvů:
Projekty .NET MAUI využívají implicitní global using
direktivy. Tato funkce vám umožňuje odstranit using
direktivy pro obor Xamarin.Essentials
názvů, aniž byste je museli nahrazovat ekvivalentními obory názvů .NET MAUI.
Kromě toho výchozí obor názvů XAML se změnil z http://xamarin.com/schemas/2014/forms
v Xamarin.Forms na http://schemas.microsoft.com/dotnet/2021/maui
v .NET MAUI. Proto byste měli nahradit všechny výskyty xmlns="http://xamarin.com/schemas/2014/forms"
za xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
.
Poznámka:
Můžete rychle aktualizovat své Xamarin.Forms
oborové názvy na Microsoft.Maui
pomocí rychlých akcí ve Visual Studio, pokud máte nainstalovaný Upgrade Assistant.
Změny rozhraní API
Některá rozhraní API byla změněna při přechodu z Xamarin.Forms na .NET MAUI. Toto zahrnuje několik důvodů, včetně odstranění duplicitní funkčnosti způsobené tím, že se Xamarin.Essentials stává součástí .NET MAUI, a zajištění, že API budou dodržovat pokyny pro pojmenování v .NET. Následující sekce pojednávají o těchto změnách.
Změny barev
Ve Xamarin.Forms struktura Xamarin.Forms.Color
umožňuje konstruovat objekty Color pomocí hodnot double
, a poskytuje pojmenované barvy, jako je například Xamarin.Forms.Color.AliceBlue
. V .NET MAUI byla tato funkčnost rozdělena na třídu Microsoft.Maui.Graphics.Color a třídu Microsoft.Maui.Graphics.Colors.
Třída Microsoft.Maui.Graphics.Color v názvovém prostoru Microsoft.Maui.Graphics vám umožňuje vytvářet objekty Color pomocí hodnot float
, hodnot byte
a hodnot int
. Třída Microsoft.Maui.Graphics.Colors, která se také nachází v oboru názvů Microsoft.Maui.Graphics, převážně poskytuje stejné pojmenované barvy. Například použijte Colors.AliceBlue k určení AliceBlue
barvy.
Následující tabulka zobrazuje změny v API mezi strukturou Xamarin.Forms.Color
a třídou Microsoft.Maui.Graphics.Color.
Xamarin.Forms Rozhraní api | Rozhraní .NET MAUI API | Komentář |
---|---|---|
Xamarin.Forms.Color.R |
Microsoft.Maui.Graphics.Color.Red | |
Xamarin.Forms.Color.G |
Microsoft.Maui.Graphics.Color.Green | |
Xamarin.Forms.Color.B |
Microsoft.Maui.Graphics.Color.Blue | |
Xamarin.Forms.Color.A |
Microsoft.Maui.Graphics.Color.Alpha | |
Xamarin.Forms.Color.Hue |
Microsoft.Maui.Graphics.Color.GetHue | Xamarin.Forms vlastnost nahrazena metodou v .NET MAUI. |
Xamarin.Forms.Color.Saturation |
Microsoft.Maui.Graphics.Color.GetSaturation | Xamarin.Forms vlastnost nahrazena metodou v .NET MAUI. |
Xamarin.Forms.Color.Luminosity |
Microsoft.Maui.Graphics.Color.GetLuminosity | Xamarin.Forms vlastnost nahrazena metodou v .NET MAUI. |
Xamarin.Forms.Color.Default |
Neexistuje žádný ekvivalent .NET MAUI. Místo toho Microsoft.Maui.Graphics.Color objekty výchozí null . |
|
Xamarin.Forms.Color.Accent |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Color.FromHex |
Microsoft.Maui.Graphics.Color.FromArgb | Microsoft.Maui.Graphics.Color.FromHex je zastaralý a bude odstraněn v budoucím vydání. |
Kromě toho jsou všechny číselné hodnoty v Microsoft.Maui.Graphics.Colorfloat
místo double
používaných v Xamarin.Forms.Color
.
Poznámka:
Na rozdíl od Xamarin.Forms, Microsoft.Maui.Graphics.Color nemá implicitní konverzi na System.Drawing.Color.
Změny rozvržení
Následující tabulka uvádí rozvržení API, které byly odstraněny při přechodu z Xamarin.Forms na .NET MAUI:
Xamarin.Forms Rozhraní api | Rozhraní .NET MAUI API | Komentáře |
---|---|---|
Xamarin.Forms.AbsoluteLayout.IAbsoluteList<T>.Add |
Přetížení Add , které přijímá tři argumenty, není v .NET MAUI. |
|
Xamarin.Forms.Grid.IGridList<T>.AddHorizontal |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Grid.IGridList<T>.AddVertical |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.RelativeLayout |
Microsoft.Maui.Controls.Compatibility.RelativeLayout | V .NET MAUI existuje RelativeLayout pouze jako kompatibilitní prvek pro uživatele přecházející z Xamarin.Forms. Použijte Grid místo toho nebo přidejte xmlns pro kompatibilitu jmenného prostoru. |
K přidání dětí do rozložení v kódu v Xamarin.Forms dochází jejich vložením do kolekce rozložení Children
.
Grid grid = new Grid();
grid.Children.Add(new Label { Text = "Hello world" });
V .NET MAUI je kolekce Children určena pro interní použití .NET MAUI a neměla by být přímo upravována. V kódu by proto měly být děti přidány přímo do rozvržení.
Grid grid = new Grid();
grid.Add(new Label { Text = "Hello world" });
Důležité
Jakékoli rozšířené metody uspořádání Add
, jako je GridExtensions.Add, jsou vyvolány na rozložení spíše než na kolekci uspořádání Children.
Můžete si všimnout, že při spuštění vaší vylepšené aplikace .NET MAUI se chování rozložení liší. Pro více informací viz Změny chování rozložení z Xamarin.Forms.
Změny vlastního rozložení
Proces vytváření vlastního rozložení v Xamarin.Forms zahrnuje vytvoření třídy, která je odvozena z Layout<View>
a přepsání metod VisualElement.OnMeasure
a Layout.LayoutChildren
. Další informace naleznete v Vytvoření vlastního rozložení v Xamarin.Forms.
V .NET MAUI se třídy rozložení odvozují z abstraktní třídy Layout. Tato třída deleguje křížovou platformu rozvržení a měření na třídu správce rozvržení. Každá třída správce rozložení implementuje rozhraní ILayoutManager, které určuje, že je nutné poskytnout implementace Measure a ArrangeChildren.
- Implementace Measure volá IView.Measure na každý pohled v rozvržení a vrací celkovou velikost rozvržení s ohledem na omezení.
- Implementace ArrangeChildren určuje, kde by měl být každý náhled umístěn v rámci rozložení, a volá Arrange na každém náhledu s jeho příslušnými hranicemi. Návratová hodnota je skutečná velikost rozvržení.
Pro více informací se podívejte na vlastní rozvržení.
Změny zařízení
Xamarin.Forms má třídu Xamarin.Forms.Device
, která vám pomáhá komunikovat se zařízením a platformou, na které aplikace běží. Třída ekvivalentní v .NET MAUI, Microsoft.Maui.Controls.Device, je zastaralá a její funkčnost je nahrazena několika typy.
Následující tabulka ukazuje náhrady .NET MAUI pro funkce ve třídě Xamarin.Forms.Device
.
Xamarin.Forms Rozhraní api | Rozhraní .NET MAUI API | Komentáře |
---|---|---|
Xamarin.Forms.Device.Android |
Microsoft.Maui.Devices.DevicePlatform.Android | |
Xamarin.Forms.Device.iOS |
Microsoft.Maui.Devices.DevicePlatform.iOS | |
Xamarin.Forms.Device.GTK |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Device.macOS |
Neexistuje žádný ekvivalent .NET MAUI. Místo toho použijte Microsoft.Maui.Devices.DevicePlatform.MacCatalyst. | |
Xamarin.Forms.Device.Tizen |
Microsoft.Maui.Devices.DevicePlatform.Tizen | |
Xamarin.Forms.Device.UWP |
Microsoft.Maui.Devices.DevicePlatform.WinUI | |
Xamarin.Forms.Device.WPF |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Device.Flags |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Device.FlowDirection |
Microsoft.Maui.ApplicationModel.AppInfo.RequestedLayoutDirection | |
Xamarin.Forms.Device.Idiom |
Microsoft.Maui.Devices.DeviceInfo.Idiom | |
Xamarin.Forms.Device.IsInvokeRequired |
Microsoft.Maui.Dispatching.Dispatcher.IsDispatchRequired | |
Xamarin.Forms.Device.OS |
Microsoft.Maui.Devices.DeviceInfo.Platform | |
Xamarin.Forms.Device.RuntimePlatform |
Microsoft.Maui.Devices.DeviceInfo.Platform | |
Xamarin.Forms.Device.BeginInvokeOnMainThread |
Microsoft.Maui.ApplicationModel.MainThread.BeginInvokeOnMainThread | |
Xamarin.Forms.Device.GetMainThreadSynchronizationContextAsync |
Microsoft.Maui.ApplicationModel.MainThread.GetMainThreadSynchronizationContextAsync | |
Xamarin.Forms.Device.GetNamedColor |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Device.GetNamedSize |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Device.Invalidate |
Microsoft.Maui.Controls.VisualElement.InvalidateMeasure | |
Xamarin.Forms.Device.InvokeOnMainThreadAsync |
Microsoft.Maui.ApplicationModel.MainThread.InvokeOnMainThreadAsync | |
Xamarin.Forms.Device.OnPlatform |
Microsoft.Maui.Devices.DeviceInfo.Platform | |
Xamarin.Forms.Device.OpenUri |
Microsoft.Maui.ApplicationModel.Launcher.OpenAsync | |
Xamarin.Forms.Device.SetFlags |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Device.SetFlowDirection |
Microsoft.Maui.Controls.Window.FlowDirection | |
Xamarin.Forms.Device.StartTimer |
Microsoft.Maui.Dispatching.DispatcherExtensions.StartTimer nebo Microsoft.Maui.Dispatching.Dispatcher.DispatchDelayed |
Změny mapy
V Xamarin.Forms jsou řízení Map
a související typy v jmenném prostoru Xamarin.Forms.Maps
. V .NET MAUI se tato funkce přesunula do jmenných prostorů Microsoft.Maui.Controls.Maps a Microsoft.Maui.Maps. Některé vlastnosti byly přejmenovány a některé typy byly nahrazeny ekvivalentními typy z Xamarin.Essentials.
Následující tabulka ukazuje náhrady .NET MAUI pro funkce v oboru názvů Xamarin.Forms.Maps
:
Xamarin.Forms Rozhraní api | Rozhraní .NET MAUI API | Komentář |
---|---|---|
Xamarin.Forms.Maps.Map.HasScrollEnabled |
Microsoft.Maui.Controls.Maps.Map.IsScrollEnabled | |
Xamarin.Forms.Maps.Map.HasZoomEnabled |
Microsoft.Maui.Controls.Maps.Map.IsZoomEnabled | |
Xamarin.Forms.Maps.Map.TrafficEnabled |
Microsoft.Maui.Controls.Maps.Map.IsTrafficEnabled | |
Xamarin.Forms.Maps.Map.MoveToLastRegionOnLayoutChange |
Neexistuje žádný ekvivalent .NET MAUI. | |
Xamarin.Forms.Maps.Pin.Id |
Microsoft.Maui.Controls.Maps.Pin.MarkerId | |
Xamarin.Forms.Maps.Pin.Position |
Microsoft.Maui.Controls.Maps.Pin.Location | |
Xamarin.Forms.Maps.MapClickedEventArgs.Position |
Microsoft.Maui.Controls.Maps.MapClickedEventArgs.Location | |
Xamarin.Forms.Maps.Position |
Microsoft.Maui.Devices.Sensors.Location | Členové typu Xamarin.Forms.Maps.Position se změnili na typ Microsoft.Maui.Devices.Sensors.Location. |
Xamarin.Forms.Maps.Geocoder |
Microsoft.Maui.Devices.Sensors.Geocoding | Členové typu Xamarin.Forms.Maps.Geocoder se změnili na typ Microsoft.Maui.Devices.Sensors.Geocoding. |
.NET MAUI má dva Map
typy - Microsoft.Maui.Controls.Maps.Map a Microsoft.Maui.ApplicationModel.Map. Vzhledem k tomu, že Microsoft.Maui.ApplicationModel prostor názvů je jednou z direktiv .NET MAUI global using
, při použití ovládacího prvku Microsoft.Maui.Controls.Maps.Map z kódu budete muset zcela zpřesnit své použití Map
nebo použít alias using.
V XAML by měla být přidána definice oboru názvů xmlns
pro ovládací prvek Map. I když to není vyžadováno, zabrání se tím kolizi mezi typy Polygon
a Polyline
, které existují v obou jmenných prostorech Microsoft.Maui.Controls.Maps a Microsoft.Maui.Controls.Shapes. Pro více informací si přečtěte Display a map.
Další změny
Malý počet dalších API byl konsolidován při přechodu z Xamarin.Forms na .NET MAUI. Následující tabulka ukazuje tyto změny:
Xamarin.Forms Rozhraní api | Rozhraní .NET MAUI API | Komentáře |
---|---|---|
Xamarin.Forms.Application.Properties |
Microsoft.Maui.Storage.Preferences | |
Xamarin.Forms.Button.Image |
Microsoft.Maui.Controls.Button.ImageSource | |
Xamarin.Forms.Frame.OutlineColor |
Microsoft.Maui.Controls.Frame.BorderColor | |
Xamarin.Forms.IQueryAttributable.ApplyQueryAttributes |
Microsoft.Maui.Controls.IQueryAttributable.ApplyQueryAttributes | V Xamarin.Forms metoda ApplyQueryAttributes přijímá argument IDictionary<string, string> . V .NET MAUI metoda ApplyQueryAttributes přijímá argument IDictionary<string, object> . |
Xamarin.Forms.MenuItem.Icon |
Microsoft.Maui.Controls.MenuItem.IconImageSource |
Xamarin.Forms.MenuItem.Icon je základní třída pro Xamarin.Forms.ToolbarItem , a proto se ToolbarItem.Icon stává ToolbarItem.IconImageSource . |
Xamarin.Forms.OrientationStateTrigger.Orientation |
Microsoft.Maui.Controls.OrientationStateTrigger.Orientation | Ve Xamarin.Forms je vlastnost OrientationStateTrigger.Orientation typu Xamarin.Forms.Internals.DeviceOrientation . V .NET MAUI je vlastnost OrientationStateTrigger.Orientation typu DisplayOrientation. |
Xamarin.Forms.OSAppTheme |
Microsoft.Maui.ApplicationModel.AppTheme | |
Xamarin.Forms.Span.ForegroundColor |
Microsoft.Maui.Controls.Span.TextColor | |
Xamarin.Forms.ToolbarItem.Name |
Microsoft.Maui.Controls.MenuItem.Text |
Microsoft.Maui.Controls.MenuItem.Text je základní třída pro Microsoft.Maui.Controls.ToolbarItem, a proto se ToolbarItem.Name stává ToolbarItem.Text . |
Kromě toho, v Xamarin.Forms, je předání řízení Page.OnAppearing
vyvoláno na Androidu, když se aplikace přesune na pozadí a poté se vrátí na popředí. Nicméně tento přepsání není na iOS a Windows ve stejném scénáři voláno. V .NET MAUI se přepis OnAppearing() nevolá na žádné platformě, když je aplikace převedena na pozadí a poté opět přivedena do popředí. Místo toho byste měli sledovat události životního cyklu na Window, abyste byli upozorněni, když se aplikace vrátí na popředí. Další informace naleznete v .NET MAUI windows.
Změny nativních formulářů
Native forms v Xamarin.Forms se staly nativním vložením do .NET MAUI a používají jiný přístup k inicializaci a různé rozšiřovací metody k převodu multiplatformních ovládacích prvků na jejich nativní typy. Pro více informací se podívejte na Native embedding.
Změny v AssemblyInfo
Vlastnosti, které jsou obvykle nastaveny v souboru AssemblyInfo.cs, jsou nyní dostupné ve vašem projektu stylu SDK. Doporučujeme je přesunout z AssemblyInfo.cs do souboru projektu v každém projektu a následně odstranit soubor AssemblyInfo.cs.
Volitelně můžete ponechat soubor AssemblyInfo.cs a nastavit vlastnost GenerateAssemblyInfo
ve vašem projektovém souboru na false
.
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
Pro více informací o vlastnosti GenerateAssemblyInfo
, podívejte se na GenerateAssemblyInfo.
Aktualizujte závislosti aplikace
Obecně platí, že Xamarin.Forms balíčky NuGet nejsou kompatibilní s .NET 8, pokud nebyly znovu zkompilovány pomocí .NET cílového rámce označení (TFM). Android aplikace však mohou používat balíčky NuGet cílené na rámce monoandroid
a monoandroidXX.X
.
Můžete potvrdit, že balíček je kompatibilní s .NET 8, když se podíváte na kartu Frameworks na NuGet pro balíček, který používáte, a zkontrolujete, zda obsahuje některý z kompatibilních frameworků uvedených v následující tabulce:
Kompatibilní rámce | Nepodporované frameworky |
---|---|
net8.0-android, monoandroid, monoandroidXX.X | |
net8.0-ios | monotouch, xamarinios, xamarinios10 |
net8.0-macos | monomac, xamarinmac, xamarinmac20 |
net8.0-tvos | xamarintvos |
xamarinwatchos |
Poznámka:
Knihovny .NET Standard, které nemají závislosti na nekompatibilních rámcích uvedených výše, jsou stále kompatibilní s .NET 8.
Pokud balíček na NuGet naznačuje kompatibilitu s některým z výše uvedených kompatibilních rámců, bez ohledu na to, zda také obsahuje nekompatibilní rámce, pak je balíček kompatibilní. Kompatibilní balíčky NuGet lze přidat do vašeho knihovního projektu .NET MAUI pomocí správce balíčků NuGet v programu Visual Studio.
Pokud nemůžete najít verzi balíčku NuGet kompatibilní s .NET 8, měli byste:
- Překompilujte balíček s .NET TFMs, pokud vlastníte kód.
- Hledejte ukázkovou verzi balíčku .NET 8.
- Nahraďte závislost alternativou kompatibilní s .NET 8.
Kompilovat a odstraňovat problémy
Jakmile jsou vyřešeny vaše závislosti, měli byste sestavit svůj projekt. Jakékoli chyby vás nasměrují k dalším krokům.
Návod
- Před otevřením a sestavováním projektů v sadě Visual Studio odstraňte všechny složky bin a obj , zejména při změně verzí .NET.
- Odstraňte automaticky generovaný soubor Resource.designer.cs z Android projektu.
Následující tabulka poskytuje návod pro překonání běžných problémů s kompilací nebo běhovými problémy.
Problém | Návod |
---|---|
Xamarin.* jmenný prostor neexistuje. |
Aktualizujte obor názvů na jeho ekvivalent pro .NET MAUI. Pro více informací se podívejte na Změny názvového prostoru. |
Rozhraní API neexistuje. | Aktualizujte použití API na jeho ekvivalent v .NET MAUI. Pro více informací se podívejte na změny API. |
Aplikace se nenasadí. | Zajistěte, aby byl požadovaný projekt platformy nastaven k nasazení ve Správci konfigurace Visual Studio. |
Aplikace se nespustí. | Aktualizujte třídu vstupního bodu každého platformního projektu a vstupní bod aplikace. Pro více informací viz Bootstrap vaší migrované aplikace. |
CollectionView se neposouvá. | Zkontrolujte rozložení kontejneru a naměřenou velikost CollectionView. Ve výchozím nastavení bude ovládací prvek zabírat tolik místa, kolik kontejner umožňuje. Prvek Grid omezuje své děti na vlastní velikost. Navíc StackLayout umožňuje dětem zabírat místo i mimo jeho hranice. |
Vyskakovací okno se zobrazuje pod stránkou na iOS. | V Xamarin.Forms jsou všechny vyskakovací okna na iOS instance UIWindow , ale v .NET MAUI jsou vyskakovací okna zobrazena nalezením aktuálního prezentujícího ViewController a zobrazením vyskakovacího okna pomocí PresentViewControllerAsync . V pluginech, jako je Mopups, abyste zajistili správné zobrazení vašich vyskakovacích oken, měli byste zavolat DisplayAlert (nebo DisplayAlertAsync ve verzi .NET 10+), DisplayActionSheet (nebo DisplayActionSheetAsync ve verzi .NET 10+), nebo DisplayPromptAsync z ContentPage, který se používá uvnitř Mopup vyskakovacího okna. |
BoxView se nezobrazuje. | Výchozí velikost BoxView v Xamarin.Forms je 40x40. Výchozí velikost BoxView v .NET MAUI je 0x0. Nastavte WidthRequest a HeightRequest na 40. |
Rozvržení postrádá odsazení, okraje nebo mezery. | Přidejte výchozí hodnoty do svého projektu na základě stylového zdroje .NET MAUI. Pro více informací se podívejte na Výchozí změny hodnot z Xamarin.Forms. |
Vlastní rozvržení nefunguje. | Kód vlastního rozvržení je třeba aktualizovat, aby fungoval v .NET MAUI. Pro více informací viz Úpravy vlastního rozložení. |
Vlastní vykreslovač nefunguje. | Kód rendereru potřebuje aktualizaci, aby pracoval s .NET MAUI. Pro více informací viz Use custom renderers in .NET MAUI. |
Efekt nefunguje. | Kód efektu je nutné aktualizovat, aby fungoval v .NET MAUI. Pro více informací viz Použití efektů v .NET MAUI. |
SkiaSharp kód nefunguje. | SkiaSharp kód potřebuje drobné úpravy, aby fungoval v .NET MAUI. Pro více informací si prohlédněte Reuse SkiaSharp code in .NET MAUI. |
Nelze získat přístup k dříve vytvořeným údajům o vlastnostech aplikace. | Migrujte data vlastností aplikace do preferencí .NET MAUI. Pro více informací se podívejte na Přesuňte data ze slovníku vlastností aplikace Xamarin.Forms do preferencí .NET MAUI. |
Nelze získat přístup k dříve vytvořeným datům v zabezpečeném úložišti. | Přesuňte data bezpečného úložiště do .NET MAUI. Pro více informací se podívejte na Migrujte ze Xamarin.Essentials zabezpečeného úložiště na zabezpečené úložiště .NET MAUI. |
Nelze získat přístup k dříve vytvořeným datům pro sledování verzí. | Přeneste data sledování verzí do .NET MAUI. Pro více informací si přečtěte Jak migrovat data o sledování verzí z aplikace Xamarin.Forms do aplikace .NET MAUI. |