Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het upgraden van een multi-project Xamarin.Forms app naar een multi-project .NET Multi-platform App UI (.NET MAUI) app kan worden uitgevoerd door een nieuwe multi-project .NET MAUI app te maken en vervolgens de code en resources van uw Xamarin.Forms apps te migreren naar de multi-project .NET MAUI app. Vervolgens zijn er aanvullende stappen om te profiteren van wijzigingen in .NET MAUI.
Als u een app met meerdere projecten Xamarin.Forms handmatig wilt migreren naar een .NET MAUI-bibliotheek-app voor meerdere projecten, moet u het volgende doen:
- Werk je Xamarin.Forms app bij om Xamarin.Forms 5 te gebruiken.
- Werk de afhankelijkheden van de app bij naar de nieuwste versies.
- Zorg ervoor dat de app nog steeds werkt.
- Werk namespaces bij.
- Behandel eventuele API-wijzigingen.
- Upgrade of vervang incompatibele afhankelijkheden door .NET 8-versies.
- Compileer en test je app.
Om het upgradeproces te vereenvoudigen, moet u een nieuwe multi-project .NET MAUI-app met dezelfde naam als uw Xamarin.Forms app maken en vervolgens uw code, configuratie en resources erin kopiëren. Dit is de aanpak die hieronder wordt uiteengezet.
Werk je Xamarin.Forms app bij
Voordat u uw Xamarin.Forms-app upgrade naar .NET MAUI, moet u eerst uw Xamarin.Forms-app updaten zodat deze Xamarin.Forms 5 gebruikt en ervoor zorgen dat deze nog steeds correct werkt. Daarnaast moet u de afhankelijkheden die uw app gebruikt bijwerken naar de nieuwste versies.
Dit zal helpen om de rest van het migratieproces te vereenvoudigen, omdat het de API-verschillen tussen Xamarin.Forms en .NET MAUI zal minimaliseren en ervoor zal zorgen dat je de .NET-compatibele versies van je afhankelijkheden gebruikt, indien deze bestaan.
Een nieuw project maken
Maak in Visual Studio een nieuwe .NET MAUI-app voor meerdere projecten met dezelfde naam als uw Xamarin.Forms project. De sjabloon voor meerdere projecten biedt een .NET MAUI-app voor Android, iOS, Mac Catalyst en WinUI met meerdere, afzonderlijke app-projecten.
Opmerking
U kunt de app-projecten verwijderen voor platforms die u niet ondersteunt.
Als u het projectbestand voor de klassebibliotheek opent, controleert u of u een .NET SDK-project hebt:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFramework>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>
<SingleProject>true</SingleProject>
<ImplicitUsings>enable</ImplicitUsings>
<UseMaui>true</UseMaui>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Als u een specifiek platformproject opent, moet u ook bevestigen dat u vergelijkbare eigenschappen hebt ingesteld, inclusief versiebeheer met een verwijzing naar het bibliotheekproject:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
<SupportedOSPlatformVersion>21.0</SupportedOSPlatformVersion>
<OutputType>Exe</OutputType>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseMaui>true</UseMaui>
</PropertyGroup>
<!--
...
-->
<ItemGroup>
<ProjectReference Include="..\MauiApp.1\MauiApp.1.csproj" />
</ItemGroup>
</Project>
Bestanden kopiëren naar de .NET MAUI-app
Alle platformoverschrijdende code van uw Xamarin.Forms bibliotheekproject moet worden gekopieerd naar uw .NET MAUI-bibliotheekproject in identieke benoemde mappen en bestanden.
Aangepaste renderers kunnen opnieuw worden gebruikt in een .NET MAUI-app of worden gemigreerd naar een .NET MAUI-handler. Zie Aangepaste renderers hergebruiken in .NET MAUI en Een aangepaste renderer migreren Xamarin.Forms naar een .NET MAUI-handler voor meer informatie.
Effecten kunnen opnieuw worden gebruikt in een .NET MAUI-app. Zie Hergebruikeffecten voor meer informatie.
Als er platformspecifieke services zijn die moeten worden overgezet naar .NET MAUI, gebruik dan de AddTransient(IServiceCollection, Type)-methode om een tijdelijke service van het opgegeven type toe te voegen aan de opgegeven IServiceCollection.
Alle platformcode, resources en configuratie moeten vervolgens worden gekopieerd naar uw .NET MAUI-app voor meerdere projecten.
Wijzigingen in naamruimten
De namespaces zijn gewijzigd bij de overgang van Xamarin.Forms naar .NET MAUI, en Xamarin.Essentials-functies maken nu deel uit van .NET MAUI. Voor het bijwerken van namespaces dient u een zoek-en-vervang uit te voeren voor de volgende namespaces:
.NET MAUI-projecten maken gebruik van impliciete global using
directieven. Deze functie stelt je in staat om using
richtlijnen voor de Xamarin.Essentials
naamruimte te verwijderen, zonder dat je ze hoeft te vervangen door de equivalente .NET MAUI naamruimtes.
Bovendien is de standaard XAML-naamruimte in .NET MAUI veranderd van http://xamarin.com/schemas/2014/forms
in Xamarin.Forms naar http://schemas.microsoft.com/dotnet/2021/maui
. Vervang daarom alle gevallen van xmlns="http://xamarin.com/schemas/2014/forms"
door xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
.
Opmerking
U kunt uw Xamarin.Forms
naamruimten snel bijwerken naar Microsoft.Maui
door Snelle acties in Visual Studio te gebruiken, op voorwaarde dat u Upgrade Assistant heeft geïnstalleerd.
API-wijzigingen
Sommige API's zijn gewijzigd in de overstap van Xamarin.Forms, naar .NET MAUI. Dit zijn meerdere redenen, waaronder het verwijderen van dubbele functionaliteit veroorzaakt doordat Xamarin.Essentials onderdeel werd van .NET MAUI, en ervoor zorgen dat de API's de .NET naamgevingsrichtlijnen volgen. De volgende secties bespreken deze veranderingen.
Kleurwijzigingen
In Xamarin.Forms, de Xamarin.Forms.Color
struct kunt u Color objecten creëren met behulp van double
waarden en biedt benoemde kleuren, zoals Xamarin.Forms.Color.AliceBlue
. In .NET MAUI is deze functionaliteit opgesplitst in de Microsoft.Maui.Graphics.Color-klasse en de Microsoft.Maui.Graphics.Colors-klasse.
De Microsoft.Maui.Graphics.Color klasse, in de Microsoft.Maui.Graphics namespace, stelt je in staat Color objecten te construeren met behulp van float
waarden, byte
waarden, en int
waarden. De Microsoft.Maui.Graphics.Colors klasse, die zich ook in de Microsoft.Maui.Graphics namespace bevindt, biedt grotendeels dezelfde benoemde kleuren. Bijvoorbeeld, gebruik Colors.AliceBlue om de AliceBlue
kleur te specificeren.
De volgende tabel toont de API-wijzigingen tussen de Xamarin.Forms.Color
struct en de Microsoft.Maui.Graphics.Color class.
Xamarin.Forms API | .NET MAUI API | Opmerking |
---|---|---|
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 eigenschap vervangen door een methode in .NET MAUI. |
Xamarin.Forms.Color.Saturation |
Microsoft.Maui.Graphics.Color.GetSaturation | Xamarin.Forms eigenschap vervangen door een methode in .NET MAUI. |
Xamarin.Forms.Color.Luminosity |
Microsoft.Maui.Graphics.Color.GetLuminosity | Xamarin.Forms eigenschap vervangen door een methode in .NET MAUI. |
Xamarin.Forms.Color.Default |
Geen equivalent voor .NET MAUI. In plaats daarvan, vallen Microsoft.Maui.Graphics.Color-objecten standaard terug op null . |
|
Xamarin.Forms.Color.Accent |
Geen equivalent voor .NET MAUI. | |
Xamarin.Forms.Color.FromHex |
Microsoft.Maui.Graphics.Color.FromArgb | Microsoft.Maui.Graphics.Color.FromHex is verouderd en zal in een toekomstige versie worden verwijderd. |
Bovendien zijn alle numerieke waarden in een Microsoft.Maui.Graphics.Colorfloat
, in plaats van double
zoals gebruikt in Xamarin.Forms.Color
.
Opmerking
In tegenstelling tot Xamarin.Forms heeft een Microsoft.Maui.Graphics.Color geen impliciete conversie naar System.Drawing.Color.
Layoutwijzigingen
De volgende tabel bevat een overzicht van de layout-API's die zijn verwijderd bij de overgang van Xamarin.Forms naar .NET MAUI.
Xamarin.Forms API | .NET MAUI API | Opmerkingen |
---|---|---|
Xamarin.Forms.AbsoluteLayout.IAbsoluteList<T>.Add |
De Add overload die drie argumenten accepteert, is niet aanwezig in .NET MAUI. |
|
Xamarin.Forms.Grid.IGridList<T>.AddHorizontal |
Geen equivalent voor .NET MAUI. | |
Xamarin.Forms.Grid.IGridList<T>.AddVertical |
Geen equivalent voor .NET MAUI. | |
Xamarin.Forms.RelativeLayout |
Microsoft.Maui.Controls.Compatibility.RelativeLayout | Binnen .NET MAUI bestaat RelativeLayout alleen als een compatibiliteitscontrole voor gebruikers die migreren vanaf Xamarin.Forms. Gebruik in plaats daarvan Grid, of voeg xmlns toe voor de compatibiliteitsnamespace. |
Bovendien wordt het toevoegen van kinderen aan een lay-out in code in Xamarin.Forms gerealiseerd door het toevoegen van de kinderen aan de Children
verzameling van de lay-out.
Grid grid = new Grid();
grid.Children.Add(new Label { Text = "Hello world" });
In .NET INTERNAL is de Children verzameling bedoeld voor intern gebruik door .NET INTERNAL en mag deze niet rechtstreeks worden gemanipuleerd. Daarom moeten kinderen in de code direct aan de lay-out worden toegevoegd.
Grid grid = new Grid();
grid.Add(new Label { Text = "Hello world" });
Belangrijk
Alle Add
lay-outuitbreidingsmethoden, zoals GridExtensions.Add, worden op de lay-out aangeroepen in plaats van op de Children-verzameling van lay-outs.
U ziet mogelijk dat bij het uitvoeren van uw bijgewerkte .NET MAUI-app het lay-outgedrag anders is. Voor meer informatie, zie Layoutgedragswijzigingen van Xamarin.Forms.
Aangepaste lay-outwijzigingen
Het proces voor het maken van een aangepaste lay-out in Xamarin.Forms houdt in dat er een klasse wordt aangemaakt die afstamt van Layout<View>
, en het overschrijven van de VisualElement.OnMeasure
en Layout.LayoutChildren
methoden. Voor meer informatie, zie Een aangepaste indeling maken in Xamarin.Forms.
In .NET MAUI zijn de opmaakklassen afgeleid van de abstracte Layout klasse. Deze klasse delegeert het platformonafhankelijke ontwerp en de meting aan een lay-out manager klasse. Elke layout manager klasse implementeert de ILayoutManager interface, die specificeert dat Measure en ArrangeChildren implementaties moeten worden geleverd.
- De Measure-implementatie roept IView.Measure aan op elke weergave in de lay-out en retourneert de totale grootte van de lay-out gezien de beperkingen.
- De ArrangeChildren implementatie bepaalt waar elke weergave binnen de grenzen van de lay-out moet worden geplaatst en roept Arrange aan voor elke weergave met de juiste grenzen. De retourwaarde is de werkelijke grootte van de lay-out.
Voor meer informatie, zie Aangepaste ontwerpen.
Apparaatwijzigingen
Xamarin.Forms heeft een Xamarin.Forms.Device
klasse die je helpt om te communiceren met het apparaat en het platform waarop de app draait. De equivalente klasse in .NET MAUI, Microsoft.Maui.Controls.Device, is verouderd en de functionaliteit ervan is vervangen door meerdere typen.
De volgende tabel toont de .NET MAUI-vervangingen voor de functionaliteit in de Xamarin.Forms.Device
-klasse:
Xamarin.Forms API | .NET MAUI API | Opmerkingen |
---|---|---|
Xamarin.Forms.Device.Android |
Microsoft.Maui.Devices.DevicePlatform.Android | |
Xamarin.Forms.Device.iOS |
Microsoft.Maui.Devices.DevicePlatform.iOS | |
Xamarin.Forms.Device.GTK |
Geen equivalent voor .NET MAUI. | |
Xamarin.Forms.Device.macOS |
Geen equivalent voor .NET MAUI. Gebruik in plaats daarvan 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 |
Geen equivalent voor .NET MAUI. | |
Xamarin.Forms.Device.Flags |
Geen equivalent voor .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 |
Geen equivalent voor .NET MAUI. | |
Xamarin.Forms.Device.GetNamedSize |
Geen equivalent voor .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 |
Geen equivalent voor .NET MAUI. | |
Xamarin.Forms.Device.SetFlowDirection |
Microsoft.Maui.Controls.Window.FlowDirection | |
Xamarin.Forms.Device.StartTimer |
Microsoft.Maui.Dispatching.DispatcherExtensions.StartTimer of Microsoft.Maui.Dispatching.Dispatcher.DispatchDelayed |
Kaartwijzigingen
In Xamarin.Forms bevinden de Map
-besturing en bijbehorende typen zich in de Xamarin.Forms.Maps
-naamruimte. In .NET MAUI is deze functionaliteit verplaatst naar de Microsoft.Maui.Controls.Maps en Microsoft.Maui.Maps naamruimten. Sommige eigenschappen zijn hernoemd en sommige typen zijn vervangen door equivalente typen van Xamarin.Essentials.
De volgende tabel toont de .NET MAUI-vervangingen voor de functionaliteit in de Xamarin.Forms.Maps
namespace:
Xamarin.Forms API | .NET MAUI API | Opmerking |
---|---|---|
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 |
Geen equivalent voor .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 | Leden van type Xamarin.Forms.Maps.Position zijn gewijzigd naar het type Microsoft.Maui.Devices.Sensors.Location. |
Xamarin.Forms.Maps.Geocoder |
Microsoft.Maui.Devices.Sensors.Geocoding | Leden van type Xamarin.Forms.Maps.Geocoder zijn gewijzigd naar het type Microsoft.Maui.Devices.Sensors.Geocoding. |
.NET MAUI heeft twee Map
typen - Microsoft.Maui.Controls.Maps.Map en Microsoft.Maui.ApplicationModel.Map. Omdat de Microsoft.Maui.ApplicationModel namespace een van de global using
richtlijnen van .NET MAUI is, moet je bij het gebruik van de Microsoft.Maui.Controls.Maps.Map besturingselement vanuit code je Map
gebruik volledig kwalificeren of een using alias gebruiken.
In XAML moet een xmlns
namespace-definitie worden toegevoegd voor de Map controle. Hoewel dit niet vereist is, voorkomt het een botsing tussen de Polygon
en Polyline
types, die in zowel de Microsoft.Maui.Controls.Maps als Microsoft.Maui.Controls.Shapes naamruimten bestaan. Voor meer informatie, zie Een kaart weergeven.
Andere wijzigingen
Een klein aantal andere API's is samengevoegd bij de overgang van Xamarin.Forms naar .NET MAUI. De volgende tabel toont deze wijzigingen.
Xamarin.Forms API | .NET MAUI API | Opmerkingen |
---|---|---|
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 | In Xamarin.Forms accepteert de ApplyQueryAttributes -methode een IDictionary<string, string> -argument. In .NET MAUI accepteert de ApplyQueryAttributes methode een IDictionary<string, object> argument. |
Xamarin.Forms.MenuItem.Icon |
Microsoft.Maui.Controls.MenuItem.IconImageSource |
Xamarin.Forms.MenuItem.Icon is de basisklasse van Xamarin.Forms.ToolbarItem , en daarom wordt ToolbarItem.Icon ToolbarItem.IconImageSource . |
Xamarin.Forms.OrientationStateTrigger.Orientation |
Microsoft.Maui.Controls.OrientationStateTrigger.Orientation | In Xamarin.Forms, de OrientationStateTrigger.Orientation eigenschap is van het type Xamarin.Forms.Internals.DeviceOrientation . In .NET MAUI, de OrientationStateTrigger.Orientation -eigenschap is van het type 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 is de basisklasse van Microsoft.Maui.Controls.ToolbarItem, en daarom wordt ToolbarItem.Name ToolbarItem.Text . |
Bovendien wordt in Xamarin.Forms de Page.OnAppearing
override aangeroepen op Android wanneer een app op de achtergrond wordt geplaatst en daarna weer op de voorgrond wordt gehaald. Deze override wordt echter in hetzelfde scenario niet aangeroepen op iOS en Windows. In .NET MAUI wordt de OnAppearing() override niet aangeroepen op platforms wanneer een app op de achtergrond is en vervolgens naar de voorgrond wordt gehaald. In plaats daarvan moet je luisteren naar lifecycle events op Window om op de hoogte te worden gebracht wanneer een app naar de voorgrond terugkeert. Voor meer informatie, zie .NET MAUI windows.
Wijzigingen in inheemse vormen
Native forms in Xamarin.Forms zijn native embedding geworden in .NET MAUI en gebruiken een andere initiëringsmethode en andere uitbreidingsmethoden om platformonafhankelijke controles om te zetten naar hun native typen. Zie Systeemeigen insluitenvoor meer informatie.
Wijzigingen in AssemblyInfo
Eigenschappen die doorgaans worden ingesteld in een AssemblyInfo.cs-bestand zijn nu beschikbaar in je SDK-stijl project. We raden aan om ze in elk project van AssemblyInfo.cs naar uw projectbestand te migreren, en het bestand AssemblyInfo.cs te verwijderen.
Optioneel kunt u het AssemblyInfo.cs-bestand behouden en de GenerateAssemblyInfo
-eigenschap in uw projectbestand instellen op false
:
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
Voor meer informatie over de GenerateAssemblyInfo
-eigenschap, zie GenerateAssemblyInfo.
Werk app-afhankelijkheden bij
Over het algemeen zijn Xamarin.Forms NuGet-pakketten niet compatibel met .NET 8, tenzij ze opnieuw gecompileerd zijn met behulp van .NET target framework monikers (TFM's). Echter, Android-apps kunnen NuGet-pakketten gebruiken die gericht zijn op de monoandroid
en monoandroidXX.X
frameworks.
U kunt bevestigen dat een pakket compatibel is met .NET 8 door op het tabblad Frameworks op NuGet te kijken voor het pakket dat u gebruikt en te controleren of het een van de compatibele frameworks vermeldt die in de volgende tabel worden weergegeven:
Compatibele frameworks | Onverenigbare kaders |
---|---|
net8.0-android, monoandroid, monoandroidXX.X | |
net8.0-ios | monotouch, xamarinios, xamarinios10 |
net8.0-macos | monomac, xamarinmac, xamarinmac20 |
net8.0-tvos | xamarintvos |
xamarinwatchos |
Opmerking
.NET Standard-bibliotheken die geen afhankelijkheden hebben van de hierboven genoemde incompatibele frameworks zijn nog steeds compatibel met .NET 8.
Als een pakket op NuGet aangeeft compatibel te zijn met een van de hierboven genoemde compatibele frameworks, ongeacht of er ook niet-compatibele frameworks zijn opgenomen, dan is het pakket compatibel. Compatibele NuGet-pakketten kunnen aan je .NET MAUI-bibliotheekproject worden toegevoegd via de NuGet-pakketbeheerder in Visual Studio.
Als je geen .NET 8-compatibele versie van een NuGet-pakket kunt vinden, moet je:
- Compileer het pakket opnieuw met .NET TFM's als u de eigenaar bent van de code.
- Zoek naar een preview-versie van een .NET 8-versie van het pakket.
- Vervang de afhankelijkheid door een .NET 8-compatibel alternatief.
Compileer en zoek problemen op
Zodra uw afhankelijkheden zijn opgelost, moet u uw project bouwen. Eventuele fouten helpen u bij de volgende stappen.
Hint
- Verwijder alle bin - en obj-mappen uit alle projecten voordat u projecten opent en bouwt in Visual Studio, met name wanneer u .NET-versies wijzigt.
- Verwijder het gegenereerde bestand Resource.designer.cs uit het Android-project.
De volgende tabel biedt richtlijnen voor het oplossen van veelvoorkomende build- of runtimeproblemen.
Probleem | Hint |
---|---|
Xamarin.* naamruimte bestaat niet. |
Werk de namespace bij naar het .NET MAUI-equivalent. Voor meer informatie, zie Namespace-wijzigingen. |
API bestaat niet. | Werk de API-gebruik bij naar het .NET MAUI-equivalent. Voor meer informatie, zie API changes. |
De app wil niet worden ingezet. | Zorg ervoor dat het vereiste platformproject is ingesteld om te implementeren in Visual Studio's Configuration Manager. |
App start niet op. | Update elke platformproject-entrypuntklasse en het app-entrypunt. Voor meer informatie, zie Bootstrap je gemigreerde app. |
CollectionView scrollt niet. | Controleer de containerindeling en de gemeten grootte van het CollectionView. Standaard neemt de controle zoveel ruimte in als de container toestaat. Een Grid beperkt kinderen tot zijn eigen grootte. Een StackLayout stelt kinderen echter in staat om ruimte in te nemen buiten zijn grenzen. |
De pop-up wordt onderaan de pagina weergegeven op iOS. | In Xamarin.Forms zijn alle pop-ups op iOS UIWindow -instanties, maar in .NET MAUI worden pop-ups weergegeven door de huidige presenterende ViewController te lokaliseren en de pop-up weer te geven met PresentViewControllerAsync . In invoegtoepassingen zoals Mopups, om ervoor te zorgen dat uw pop-ups correct worden weergegeven, moet u DisplayAlert aanroepen (of DisplayAlertAsync in .NET 10+), DisplayActionSheet (of DisplayActionSheetAsync in .NET 10+), of DisplayPromptAsync vanuit de ContentPage die wordt gebruikt binnen de Mopup pop-up. |
BoxView wordt niet weergegeven. | De standaardgrootte van een BoxView in Xamarin.Forms is 40x40. De standaardgrootte van een BoxView in .NET MAUI is 0x0. Stel WidthRequest en HeightRequest in op 40. |
De opmaak mist opvulling, marge of ruimte. | Voeg standaardwaarden toe aan uw project op basis van de .NET MAUI stijlhulpbron. Voor meer informatie, zie Standaardwaarde veranderingen van Xamarin.Forms. |
Aangepaste layout werkt niet. | Aangepaste lay-outcode moet worden bijgewerkt om te werken in .NET MAUI. Voor meer informatie, zie Aangepaste lay-outwijzigingen. |
Aangepaste renderer werkt niet. | Renderer-code moet bijgewerkt worden om te werken in .NET MAUI. Voor meer informatie, zie Use custom renderers in .NET MAUI. |
Effect werkt niet. | De effectcode moet worden bijgewerkt om te werken in .NET MAUI. Zie Use effects in .NET MAUI voor meer informatie. |
SkiaSharp code werkt niet. | SkiaSharp code heeft kleine updates nodig om te kunnen werken in .NET MAUI. Voor meer informatie, zie Code opnieuw SkiaSharp gebruiken in .NET MAUI. |
Kan geen toegang krijgen tot eerder gemaakte app-eigenschapgegevens. | Migreer de gegevens van de app-eigenschappen naar .NET MAUI-voorkeuren. Zie voor meer informatie Gegevens uit de eigenschappenwoordenlijst van de Xamarin.Forms app migreren naar .NET MAUI-voorkeuren. |
Kan geen toegang krijgen tot eerder gemaakte beveiligde opslaggegevens. | Migreer de gegevens van beveiligde opslag naar .NET MAUI. Zie Migreren van Xamarin.Essentials beveiligde opslag naar .NET MAUI beveiligde opslag voor meer informatie. |
Kan geen toegang krijgen tot eerder gemaakte versievolggegevens. | Migreer de versietraceringsgegevens naar .NET MAUI. Voor meer informatie, zie Versietraceringsgegevens migreren van een Xamarin.Forms app naar een .NET MAUI-app. |