Wat is er nieuw in .NET MAUI voor .NET 10
De focus van .NET Multi-platform App UI (.NET MAUI) in .NET 10 is om de productkwaliteit te verbeteren. Zie de volgende releaseopmerkingen voor meer informatie over de verbeteringen van de productkwaliteit in .NET MAUI in .NET 10:
Belangrijk
Als gevolg van het werken met externe afhankelijkheden, zoals Xcode of Android SDK Tools, verschilt het ondersteuningsbeleid van .NET MAUI van het .NET- en .NET Core-ondersteuningsbeleid. Zie .NET MAUI-ondersteuningsbeleidvoor meer informatie.
In .NET 10 wordt .NET MAUI geleverd als een .NET-workload en meerdere NuGet-pakketten. Het voordeel van deze aanpak is dat u uw projecten eenvoudig kunt vastmaken aan specifieke versies, terwijl u ook eenvoudig een voorbeeld van niet-uitgebrachte of experimentele builds kunt bekijken.
Verbeteringen in controle
.NET MAUI in .NET 10 bevat controleverbeteringen.
CollectionView en CarouselView
.NET MAUI in .NET 9 bevatte twee optionele handlers op iOS en Mac Catalyst die prestatie- en stabiliteitsverbeteringen in CollectionView en CarouselViewbracht. In .NET 10 zijn dit de standaardhandlers voor CollectionView en CarouselView.
HybridWebView
HybridWebView krijgt een InvokeJavaScriptAsync overbelasting die een opgegeven JavaScript-methode aanroept zonder dat er informatie over het retourtype wordt opgegeven. Zie JavaScript-methoden aanroepen die geen waarde retournerenvoor meer informatie.
Zoekbalk
SearchBar een SearchIconColor
bindbare eigenschap krijgt waarmee de kleur van het zoekpictogram wordt ingesteld:
<SearchBar Placeholder="Search items..."
SearchIconColor="Blue" />
Zie SearchBarvoor meer informatie.
Schakelaar
Switch krijgt een OffColor
bindbare eigenschap waarmee de kleur van de schakelaar wordt ingesteld wanneer deze de uit-status heeft:
<Switch OffColor="Red"
OnColor="Green" />
Zie Switchvoor meer informatie.
Tabelweergave
TableView is verouderd verklaard. In plaats daarvan moet CollectionView worden gebruikt.
MessagingCenter
MessagingCenter is intern gemaakt in .NET 10. Het gebruik ervan in uw code kan worden vervangen door WeakReferenceMessenger
in het CommunityToolkit.Mvvm NuGet-pakket. Zie Messengervoor meer informatie.
Schaduwen
In .NET 10 is de ShadowTypeConverter
-klasse, in de Microsoft.Maui.Controls
naamruimte, nu openbaar.
Zie Shadowvoor meer informatie over hoe schaduwen kunnen worden opgegeven met behulp van opgemaakte tekenreeksen.
Platformintegratie
De SpeechOptions-klasse krijgt een Rate
eigenschap waarmee de spraaksnelheid wordt bestuurd bij het gebruik van TextToSpeech-functionaliteit. Zie instellingen voor tekst-naar-spraakvoor meer informatie.
Compatibiliteit met iOS en Mac Catalyst Toegankelijkheidsuitbreidingen
De volgende iOS-compatibiliteitsmethoden AccessibilityExtensions
uitbreidingsmethoden, in het Microsoft.Maui.Controls.Compatibility.Platform.iOS
, zijn afgeschaft:
SetAccessibilityHint
SetAccessibilityLabel
SetAccessibilityHint
SetAccessibilityLabel
In plaats daarvan moet de methode Microsoft.Maui.Platform.UpdateSemantics
worden gebruikt.
iOS- en Mac Catalyst MauiWebViewNavigationDelegate-onderdrukkingen
De volgende MauiWebViewNavigationDelegate
-methoden in de Microsoft.Maui.Platform
-naamruimte zijn nu overridebaar:
DecidePolicy
DidFailNavigation
DidFailProvisionalNavigation
DidFinishNavigation
Een modale pagina weergeven als pop-over op iOS en Mac Catalyst
.NET MAUI voor .NET 10 voegt een platform-specifieke functie toe die een modale pagina weergeeft als een popover op iOS en Mac Catalyst. Deze wordt gebruikt door de Page.ModalPopoverSourceView
bindbare eigenschap in te stellen op een View
die de bron van de modale eigenschap definieert, de Page.ModalPopoverRect
bindbare eigenschap op een Rectangle waarmee de rechthoek in de weergave wordt gedefinieerd waaruit de pop-over afkomstig is, en de Page.ModalPresentationStyle
bindbare eigenschap aan Popover
:
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
public partial class PopoverPage : ContentPage
{
public PopoverPage(View modal, Rectangle rectangle)
{
InitializeComponent();
On<iOS>().SetModalPopoverView(modal);
On<iOS>().SetModalPopoverRect(rectangle);
On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.Popover);
}
}
Navigeer vervolgens naar de modale pagina met de methode Navigation.PushModalAsync
:
Page modalPage = new PopoverPage(originButton, Rectangle.Empty);
await Navigation.PushModalAsync(modalPage);
Zie Een modale pagina weergeven als pop-over op iOS en Mac Catalystvoor meer informatie.
XAML-markupextensies
De FontImageExtension XAML-markeringsextensie is verouderd verklaard. In plaats daarvan moet het FontImageSource type worden gebruikt:
<Button Text="Press me"
Background="Transparent"
TextColor="{AppThemeBinding Light=Black, Dark=White}"
ImageSource="{FontImageSource Glyph=MyGlyph, Color={AppThemeBinding Light=Black, Dark=White}, FontFamily=FontAwesome, Size=18}" />
Voor het gemak kan ook de syntaxis van het eigenschapselement worden gebruikt:
<Button Text="Press me"
Background="Transparent"
TextColor="{AppThemeBinding Light=Black, Dark=White}" >
<Button.ImageSource>
<FontImageSource Glyph="MyGlyph"
Color="{AppThemeBinding Light=Black, Dark=White}"
FontFamily="FontAwesome"
Size="18" />
</Button.ImageSource>
</Button>
Zie Pictogrammen voor lettertypen weergevenvoor meer informatie.
.NET voor Android
.NET voor Android in .NET 10 voegt ondersteuning toe voor API 36 en JDK 21 en omvat werk om de buildtijden te verminderen en de prestaties te verbeteren. Zie de volgende releaseopmerkingen voor meer informatie over .NET voor Android in .NET 10:
Android 16 (Baklava) bèta 2 binding
Google heeft Beta 2 van de Android 16 -SDK (API-36) uitgebracht. Er is ondersteuning toegevoegd voor het gebruik van deze preview-API's.
De Android 16 preview-API als doel gebruiken:
- Gebruik de Android SDK Manager, om het Android 16 (Baklava) platform te downloaden.
- Werk de
TargetFramework
van uw project bij naarnet10.0-android36
.
Aanbevolen minimaal ondersteunde Android-API
De .NET voor Android-projectsjablonen zijn bijgewerkt om 24 (Nougat) op te geven als de standaard $(SupportedOSPlatformVersion)
in plaats van 21 (Lollipop). Hierdoor voorkomt u dat runtime 'desugaring' vastloopt wanneer u standaardinterfacemethoden van Java gebruikt.
Hoewel API 21 nog steeds wordt ondersteund in .NET 10, is het raadzaam om bestaande projecten bij te werken naar API 24 om onverwachte runtimefouten te voorkomen.
ondersteuning voor dotnet run
Voorheen werd de opdracht dotnet run
niet ondersteund voor .NET voor Android-projecten, omdat er geen parameters zijn geaccepteerd die nodig waren om op te geven welk Android-apparaat of welke emulator moet worden gebruikt.
In .NET 10 kunnen .NET voor Android-projecten worden uitgevoerd met behulp van de opdracht dotnet run
:
// Run on the only attached Android physical device
dotnet run -p:AdbTarget=-d
// Run on the only running Android emulator
dotnet run -p:AdbTarget=-e
// Run on the specified Android physical device or emulator
dotnet run -p:AdbTarget="-s emulator-5554"
De eigenschap $(AdbTarget)
wordt doorgegeven aan adb
. Voor meer informatie, zie Shell-opdrachten uitvoeren op developer.android.com.
Marshal-methoden standaard ingeschakeld
In .NET 9 is er een nieuwe manier van het maken van de marshalmethoden die nodig zijn voor het aanroepen van Java naar C#-code, wat verbeterde opstartprestaties opleverde. In .NET 9 waren ze echter standaard uitgeschakeld.
In .NET 10 zijn ze standaard ingeschakeld. Problemen met deze marshal-methoden komen vaak voor als vastlopen tijdens het opstarten. Als u bij het opstarten van .NET 10-previews problemen ondervindt die niet optraden bij .NET 9, probeer dan marshal-methoden uit te schakelen door de $(AndroidEnableMarshalMethods)
MSBuild-eigenschap in uw projectbestand in te stellen op false
.
<PropertyGroup>
<AndroidEnableMarshalMethods>false</AndroidEnableMarshalMethods>
<PropertyGroup>
Als dit de vastloper oplost, registreer dan een probleem.
ArtifactFilename
metagegevens voor @(AndroidMavenLibrary)
item
@(AndroidMavenLibrary)
werd toegevoegd in .NET 9 en maakt het mogelijk dat een Java-bibliotheek automatisch wordt gedownload van Maven om te worden gekoppeld. Over het algemeen heeft deze bibliotheek de naam {artifact.Id}-{artifact.Version}.[jar|aar]
. Dit volgt echter geen standaard en kan willekeurig verschillen.
In .NET 10 kunt u de ArtifactFilename
metagegevens toevoegen aan het @(AndroidMavenLibrary)
MSBuild-item om een alternatieve bestandsnaam toe te staan:
<ItemGroup>
<AndroidMavenLibrary Include="com.facebook.react:react-android" Version="0.76.0" ArtifactFilename="react-android-0.76.0-release.aar" />
</ItemGroup>
Visual Studio build-processen tijdens het ontwerpen roepen aapt2
niet meer op
Om de ontwerptijd-builds te versnellen, wordt aapt2
niet langer aangeroepen. In plaats daarvan worden de .aar
bestanden en onderliggende Android-resources rechtstreeks geparseerd. Dit vermindert de tijd van een build tijdens ontwerp voor sommige unittests van meer dan 2 seconden tot minder dan 600 ms.
Bouwen met JDK 21
.NET voor Android-projecten kan nu worden gebouwd met JDK 21.
generator
-uitvoer voorkomt het mogelijke gebruik van System.Reflection.Emit
Het opstarten van apps en de algehele prestaties zijn geoptimaliseerd door codepaden te verwijderen die mogelijk een System.Reflection.Emit
-toestand veroorzaken vanuit 'Java naar C#'-aanroepen.
ApplicationAttribute.ManageSpaceActivity
gooit geen InvalidCastException
meer
Als u de eigenschap ApplicationAttribute.ManageSpaceActivity
instelt, resulteert dit niet in een XAGJS7007 fout in .NET 10.
.NET voor iOS
.NET 10 op iOS, tvOS, Mac Catalyst en macOS ondersteunt de volgende platformversies:
- iOS: 18.2
- tvOS: 18.2
- Mac Catalyst: 18.2
- macOS: 15.2
Zie de volgende releaseopmerkingen voor meer informatie over .NET 10 op iOS, tvOS, Mac Catalyst en macOS:
Zie Bekende problemen in .NET 10voor informatie over bekende problemen.
Trimmerwaarschuwingen standaard ingeschakeld
Trimmerwaarschuwingen werden voorheen onderdrukt, omdat de bibliotheek van de basisklasse deze waarschuwingen gaf, waardoor het niet mogelijk was om ze allemaal op te lossen. In .NET 9 zijn echter alle iOS-trimmerwaarschuwingen opgelost en daarom zijn de waarschuwingen voor de trimmer nu standaard ingeschakeld. Als u trimmerwaarschuwingen wilt uitschakelen, stelt u de eigenschap $(SuppressTrimAnalysisWarnings)
MSBuild in op true
in uw projectbestand:
<PropertyGroup>
<SuppressTrimAnalysisWarnings>true</SuppressTrimAnalysisWarnings>
</PropertyGroup>
Oorspronkelijke resources in bibliotheken bundelen
Bibliotheekprojecten kunnen verschillende typen bundelresources hebben, zoals storyboards, xibs, eigenschappenlijsten, afbeeldingen, CoreML-modellen en patroonatlasen, en ze worden gebundeld in de gecompileerde bibliotheek als ingesloten resources.
Het verwerken van deze resources, zoals het compileren van storyboards of xibs, of het optimaliseren van propertylijsten en afbeeldingen, wordt uitgevoerd voordat ze worden ingesloten, maar dit bemoeilijkt het bouwen van bibliotheken omdat de verwerking:
- Moet worden uitgevoerd op een Mac, omdat het compileren van storyboards/xibs alleen op een Mac kan worden uitgevoerd.
- Heeft de gereedschapsketen van Apple nodig.
- Maakt het onmogelijk om besluitvorming uit te voeren op basis van de oorspronkelijke resources bij het bouwen van de app.
Daarom is opt-in-ondersteuning voor het insluiten van de oorspronkelijke resource in bibliotheken toegevoegd in .NET 9 en wordt nu opt-out in .NET 10. Als u dit gedrag wilt uitschakelen, stelt u de eigenschap $(BundleOriginalResources)
MSBuild in op false
in uw projectbestand:
<PropertyGroup>
<BundleOriginalResources>false</BundleOriginalResources>
</PropertyGroup>