Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A .NET 9 többplatformos alkalmazás felhasználói felületének (.NET MAUI) fókusza a termékminőség javítása. Ez magában foglalja a tesztelési lefedettség bővítését, a forgatókönyvek teljes körű tesztelését és a hibajavítást. A .NET MAUI 9 termékminőségi fejlesztéseivel kapcsolatos további információkért tekintse meg a következő kibocsátási megjegyzéseket:
- .NET MAUI 9
- .NET MAUI 9 RC2
- .NET MAUI 9 RC1
- .NET MAUI 9 Preview 7
- .NET MAUI 9 Preview 6
- .NET MAUI 9 Preview 5
- .NET MAUI 9 Preview 4
- .NET MAUI 9 előzetes 3
- .NET MAUI 9 Preview 2
- .NET MAUI 9 előzetes 1
Fontos
A külső függőségek, például az Xcode vagy az Android SDK Tools használata miatt a .NET MAUI támogatási szabályzata eltér a .NET és a .NET Core támogatási szabályzattól. További információ: .NET MAUI támogatási szabályzat.
Az Xcode 16-tal való kompatibilitás, amely magában foglalja az iOS 18, az iPadOS 18, a tvOS 18 és a macOS 15 SDK-támogatását, a .NET MAUI 9-zel való buildeléshez szükséges. Az Xcode 16 használatához macOS 14.5-ös vagy újabb rendszerű Mac szükséges.
A .NET 9-ben a .NET MAUI .NET számítási feladatként és több NuGet-csomagként szolgál. Ennek a megközelítésnek az az előnye, hogy lehetővé teszi a projektek konkrét verziókhoz való rögzítését, ugyanakkor lehetővé teszi a nem kiadatlan vagy kísérleti buildek egyszerű előzetes megtekintését is. Új .NET MAUI-projekt létrehozásakor a rendszer automatikusan hozzáadja a szükséges NuGet-csomagokat a projekthez.
Minimális üzembehelyezési célok
.NET MAUI 9 minimális üzembehelyezési célokat az iOS 12.2 és a Mac Catalyst 15.0 (macOS 12.0) esetén követel meg. Az Android és a Windows minimális üzembehelyezési céljai változatlanok maradnak. További információ: .NET MAUI-alkalmazások támogatott platformjai.
Új vezérlők
A .NET MAUI 9 két új vezérlőt tartalmaz.
HybridWebView
HybridWebView lehetővé teszi tetszőleges HTML/JS/CSS-tartalom webes nézetben való tárolását, és lehetővé teszi a webes nézetben (JavaScript) lévő kód és a webes nézetet futtató kód (C#/.NET) közötti kommunikációt. Ha például egy meglévő React JS-alkalmazással rendelkezik, üzemeltetheti azt egy platformfüggetlen .NET MAUI natív alkalmazásban, és létrehozhatja az alkalmazás háttérrendszerét a C# és a .NET használatával.
.NET MAUI-alkalmazás létrehozásához HybridWebView-ra van szüksége.
- Az alkalmazás webes tartalma, amely statikus HTML-, JavaScript-, CSS-, kép- és egyéb fájlokból áll.
- Egy HybridWebView vezérlő az alkalmazás felhasználói felületének részeként. Ez az alkalmazás XAML-jében való hivatkozással érhető el.
- A webes tartalomban és a C#/.NET-ben található kód, amely a HybridWebView API-k használatával küld üzeneteket a két összetevő között.
A teljes alkalmazás, beleértve a webes tartalmat is, csomagolva van, és helyileg fut egy eszközön, és közzétehető a vonatkozó alkalmazástárolókban. A webes tartalom egy natív webes nézetvezérlőben található, és az alkalmazás környezetében fut. Az alkalmazás bármely része hozzáférhet a külső webszolgáltatásokhoz, de nem szükséges.
További információ: HybridWebView.
Címsáv a Windowshoz
A TitleBar vezérlő lehetővé teszi egyéni címsor hozzáadását az alkalmazáshoz Windows rendszeren:
A TitleBar bármely Window.TitleBarTitleBar tulajdonságának értékeként állítható be:
<Window.TitleBar>
<TitleBar x:Name="TeamsTitleBar"
Title="Hello World"
Icon="appicon.png"
HeightRequest="46">
<TitleBar.Content>
<SearchBar Placeholder="Search"
PlaceholderColor="White"
MaximumWidthRequest="300"
HorizontalOptions="Fill"
VerticalOptions="Center" />
</TitleBar.Content>
</TitleBar>
</Window.TitleBar>
A C#-ban való használatára példa a következő:
Window window = new Window
{
TitleBar = new TitleBar
{
Icon = "titlebar_icon.png"
Title = "My App",
Subtitle = "Demo"
Content = new SearchBar { ... }
}
};
A TitleBar a Content, a LeadingContentés a TrailingContent tulajdonságai révén nagymértékben testre szabhatók:
<TitleBar Title="My App"
BackgroundColor="#512BD4"
HeightRequest="48">
<TitleBar.Content>
<SearchBar Placeholder="Search"
MaximumWidthRequest="300"
HorizontalOptions="Fill"
VerticalOptions="Center" />
</TitleBar.Content>
<TitleBar.TrailingContent>
<ImageButton HeightRequest="36"
WidthRequest="36"
BorderWidth="0"
Background="Transparent">
<ImageButton.Source>
<FontImageSource Size="16"
Glyph=""
FontFamily="SegoeMDL2"/>
</ImageButton.Source>
</ImageButton>
</TitleBar.TrailingContent>
</TitleBar>
Az alábbi képernyőkép az eredményként kapott megjelenést mutatja:
Jegyzet
A Mac Catalyst támogatása a TitleBar
vezérlőhöz egy későbbi kiadásban lesz hozzáadva.
További információ: Címsáv.
Vezérlési fejlesztések
A .NET MAUI 9 vezérlőfejlesztéseket tartalmaz.
BackButtonBehavior OneWay kötési mód
A Shell-alkalmazásokban a IsVisible
IsEnabled
és BackButtonBehavior kötési módja mostantól BindingMode.OneWay
, a korábbi BindingMode.OneTime
helyett. Így egyszerűbben szabályozhatja a vissza gomb működését futásidőben, adatkötésekkel:
<ContentPage ...>
<Shell.BackButtonBehavior>
<BackButtonBehavior Command="{Binding BackCommand}"
IsVisible="{Binding IsBackButtonVisible}"
IconOverride="back.png" />
</Shell.BackButtonBehavior>
...
</ContentPage>
BlazorWebView
A tartalom BlazorWebView való üzemeltetésének alapértelmezett viselkedése 0.0.0.1
lett. A tartalom üzemeltetéséhez használt belső 0.0.0.0
cím már nem működik, és azt eredményezi, hogy a BlazorWebView nem tölt be semmilyen tartalmat, és üres téglalapként jeleníti meg a megjelenítést.
A 0.0.0.0
cím használatához adja hozzá a következő kódot a CreateMauiApp
metódusához:
// Set this switch to use the LEGACY behavior of always using 0.0.0.0 to host BlazorWebView
AppContext.SetSwitch("BlazorWebView.AppHostAddressAlways0000", true);
Alapértelmezés szerint BlazorWebView most aktiválódik, és elfelejti a mögöttes WebViewManager
aszinkron ártalmatlanítását. Ez csökkenti az eltávolításhoz kapcsolódó holtpontok előfordulásának lehetőségét Androidon.
Figyelmeztetés
Ez a tűz és felejtés alapértelmezett viselkedése azt jelenti, hogy a megsemmisítés az összes objektum megsemmisítése előtt visszatérhet, ami viselkedésbeli változásokat okozhat az alkalmazásban. Az eldobott elemek részben a Blazor saját belső típusai, részben pedig az alkalmazás által definiált típusok, például az alkalmazás BlazorWebView részében használt hatókörű szolgáltatások.
Ha le szeretné tiltani ezt a viselkedést, konfigurálja az alkalmazást úgy, hogy a AppContext osztály CreateMauiApp
metódusában lévő MauiProgram
kapcsolóval tiltsa le az ártalmatlanítást:
AppContext.SetSwitch("BlazorWebView.AndroidFireAndForgetAsync", false);
Ha az alkalmazás úgy van beállítva, hogy ezzel a váltóval blokkolja az eltávolítást, a BlazorWebView aszinkron-módban végzi el a szinkron eltávolítást, ami azt jelenti, hogy blokkolja a szálat, amíg az aszinkron eltávolítás be nem fejeződik. Ez azonban holtpontot okozhat, ha az ártalmatlanításnak ugyanazon a szálon kell futtatnia a kódot (mivel a szál le van tiltva várakozás közben).
Gombok iOS rendszeren
Button iOS-vezérlők mostantól pontosabban figyelembe veszik a térközt, a párnázást, a szegély szélességét és a margókat, mint a korábbi kiadásokban. Egy Button-ban lévő nagyméretű kép mostantól a maximális méretre lesz átméretezve, figyelembe véve a térközöket, a kitöltéseket, a szegélyek szélességét és a margókat. Ha azonban egy Button szöveget és képet tartalmaz, előfordulhat, hogy nem fér el az összes tartalom a gombon belül, ezért manuálisan kell méreteznie a képet a kívánt elrendezés eléréséhez.
CollectionView és CarouselView
A .NET MAUI 9 két opcionális új kezelőt tartalmaz iOS-en és Mac Catalyston, amelyek teljesítmény- és stabilitási javulást hoznak a CollectionView
és CarouselView
komponensekhez. Ezek a kezelők UICollectionView
API-kon alapulnak.
A kezelők használatához adja hozzá a következő kódot a MauiProgram
osztályhoz:
#if IOS || MACCATALYST
builder.ConfigureMauiHandlers(handlers =>
{
handlers.AddHandler<Microsoft.Maui.Controls.CollectionView, Microsoft.Maui.Controls.Handlers.Items2.CollectionViewHandler2>();
handlers.AddHandler<Microsoft.Maui.Controls.CarouselView, Microsoft.Maui.Controls.Handlers.Items2.CarouselViewHandler2>();
});
#endif
Tartalomoldal
A .NET MAUI 9-ben a HideSoftInputOnTapped tulajdonság a Mac Catalyston, valamint Androidon és iOS-en is támogatott.
Fókusz működése a Windows rendszerben
Windows rendszeren a .NET MAUI 8-ban a rendszer az VisualElement.Focused eseményt, az VisualElement.Unfocused eseményt és a VisualElement.IsFocused tulajdonságot alkalmazza egy elemre és annak gyermekeire:
<VerticalStackLayout Focus="OnFocused">
<Entry />
<Editor />
</VerticalStackLayout>
Ebben a példában a .NET 8-on a OnFocused
eseménykezelő akkor lesz végrehajtva Windowson, amikor a VerticalStackLayout, Entryvagy Editor kerül a fókuszba.
A .NET MAUI 9 úgy módosítja ezt a viselkedést Windows rendszeren, hogy azonos legyen a többi platforméval. Ezért a VisualElement.Focused esemény, az VisualElement.Unfocused esemény és a VisualElement.IsFocused tulajdonság csak egy elemre vonatkozik. Ezért amikor az előző példa .NET 9-en fut, a OnFocused
eseménykezelő nem lesz végrehajtva, mert csak a bemeneti vezérlők kapnak fókuszt.
Puha billentyűzetbemenet támogatása
A .NET MAUI 9 új puha billentyűzetbemeneti támogatást biztosít Password
, Date
és Time
. Ezek engedélyezhetők Editor és Entry vezérlőkön:
<Entry Keyboard="Date" />
Szöveg igazítása
A TextAlignment enumerálás hozzáad egy Justify
tagot, amely a szöveg szövegének igazítására használható a szövegvezérlőkben. Egy Label szövegét például vízszintesen igazíthatja a HorizontalTextAlignment.Justify
:
<Label Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. In facilisis nulla eu felis fringilla vulputate."
HorizontalTextAlignment="Justify"/>
TimePicker
TimePicker egy TimeSelected eseményt kap, amely akkor jön létre, amikor a kiválasztott idő megváltozik. Az TimeChangedEventArgs eseményt kísérő TimeSelected
objektum NewTime
és OldTime
tulajdonságokkal rendelkezik, amelyek az új és a régi időpontot határozzák meg.
WebView
WebView hozzáad egy ProcessTerminated
eseményt, amely akkor merül fel, amikor egy WebView folyamat váratlanul véget ér. Az eseményt kísérő WebViewProcessTerminatedEventArgs
objektum platformspecifikus tulajdonságokat határoz meg, amelyek jelzik a folyamat sikertelen voltát.
Lefordított kötések a kódban
A kódban írt kötések általában olyan sztringútvonalakat használnak, amelyek futásidőben, tükröződéssel oldódnak fel, és ennek többletterhelése platformonként eltérő. A .NET MAUI 9 egy további SetBinding bővítménymetódust vezet be, amely karakterlánc-elérési út helyett egy Func
argumentum használatával határozza meg a kötéseket:
// in .NET 8
MyLabel.SetBinding(Label.TextProperty, "Text");
// in .NET 9
MyLabel.SetBinding(Label.TextProperty, static (Entry entry) => entry.Text);
Ez az összeállított kötési módszer a következő előnyöket nyújtja:
- Jobb adatkötési teljesítmény a kötési kifejezések fordítási időpontban történő megoldásával, nem pedig futásidőben.
- Jobb fejlesztői hibaelhárítási élmény, mert az érvénytelen kötések buildelési hibákként jelennek meg.
- Intellisense szerkesztés közben.
Nem minden módszer használható lefordított kötés definiálására. A kifejezésnek egyszerű tulajdonsághozzáférés-kifejezésnek kell lennie. Az alábbi példák érvényes és érvénytelen kötési kifejezéseket mutatnak:
// Valid: Property access
static (PersonViewModel vm) => vm.Name;
static (PersonViewModel vm) => vm.Address?.Street;
// Valid: Array and indexer access
static (PersonViewModel vm) => vm.PhoneNumbers[0];
static (PersonViewModel vm) => vm.Config["Font"];
// Valid: Casts
static (Label label) => (label.BindingContext as PersonViewModel).Name;
static (Label label) => ((PersonViewModel)label.BindingContext).Name;
// Invalid: Method calls
static (PersonViewModel vm) => vm.GetAddress();
static (PersonViewModel vm) => vm.Address?.ToString();
// Invalid: Complex expressions
static (PersonViewModel vm) => vm.Address?.Street + " " + vm.Address?.City;
static (PersonViewModel vm) => $"Name: {vm.Name}";
Figyelmeztetés
CS0272 fordítóhiba lép fel, ha egy tulajdonság vagy indexelő beállított tartozéka nem érhető el. Ha ez történik, növelje a tartozék akadálymentességét.
A .NET MAUI 9 emellett hozzáad egy BindingBase.Create metódust, amely közvetlenül az objektumon állítja be a bindinget egy Func
segítségével, és visszaadja a binding objektumpéldányát:
// in .NET 8
myEntry.SetBinding(Entry.TextProperty, new MultiBinding
{
Bindings = new Collection<BindingBase>
{
new Binding(nameof(Entry.FontFamily), source: RelativeBindingSource.Self),
new Binding(nameof(Entry.FontSize), source: RelativeBindingSource.Self),
new Binding(nameof(Entry.FontAttributes), source: RelativeBindingSource.Self),
},
Converter = new StringConcatenationConverter()
});
// in .NET 9
myEntry.SetBinding(Entry.TextProperty, new MultiBinding
{
Bindings = new Collection<BindingBase>
{
Binding.Create(static (Entry entry) => entry.FontFamily, source: RelativeBindingSource.Self),
Binding.Create(static (Entry entry) => entry.FontSize, source: RelativeBindingSource.Self),
Binding.Create(static (Entry entry) => entry.FontAttributes, source: RelativeBindingSource.Self),
},
Converter = new StringConcatenationConverter()
});
Fontos
A NativeAOT-alkalmazásokban és a teljes vágást engedélyező alkalmazásokban a sztringalapú kötések helyett lefordított kötésekre van szükség.
További információ a kódban lefordított kötésekről: A kódlefordított kötései.
Lefordított kötések az XAML-ben
A .NET MAUI 8-ban a lefordított kötések nem támogatottak az Source
tulajdonságot meghatározó XAML kötési kifejezésekben, és nem alkalmazhatók többkötéses megoldásokra. Ezeket a korlátozásokat eltávolítottuk a .NET MAUI 9-ben. A
Alapértelmezés szerint a .NET MAUI 9 összeállítási figyelmeztetéseket készít olyan kötésekhez, amelyek nem használnak lefordított kötéseket. További információ az XAML által lefordított kötésekre vonatkozó figyelmeztetésekről: XAML által lefordított kötésekre vonatkozó figyelmeztetések.
Függőséginjektálás
A Shell-alkalmazásokban már nem kell regisztrálnia a lapokat a függőséginjektálási tárolóban, hacsak nem szeretné befolyásolni a lap élettartamát a tárolóhoz képest a AddSingleton
, AddTransient
vagy AddScoped
metódusokkal. További információ ezekről a módszerekről: Függőségi élettartam.
Kezelő leválasztása
Amikor egy egyéni vezérlőt kezelőkkel valósítunk meg, minden platformkezelő implementációjánál szükséges a DisconnectHandler() metódus megvalósítása, hogy a natív nézet tisztítását elvégezhessük, például az eseményekről való leiratkozást. A .NET MAUI 9 előtt azonban a .NET MAUI szándékosan nem hívja meg a DisconnectHandler() implementációt. Ehelyett saját maga kell meghívnia, amikor egy vezérlő törlését választja, például ha visszafelé navigál egy alkalmazásban.
A .NET MAUI 9-ben a kezelők lehetőség szerint automatikusan lecsatlakoznak a vezérlőikről, például ha visszafelé navigálnak egy alkalmazásban. Bizonyos esetekben előfordulhat, hogy nem szeretné ezt a viselkedést. A .NET MAUI 9 ezért egy HandlerProperties.DisconnectPolicy
csatolt tulajdonságot ad hozzá annak szabályozásához, hogy a kezelők mikor vannak leválasztva a vezérlőikről. Ehhez a tulajdonsághoz egy HandlerDisconnectPolicy argumentum szükséges, amelynek felsorolása a következő értékeket tartalmazza:
-
Automatic
, amely azt jelzi, hogy a kezelők automatikusan le lesznek választva. Ez a csatoltHandlerProperties.DisconnectPolicy
tulajdonság alapértelmezett értéke. -
Manual
, amely azt jelzi, hogy a kezelőket manuálisan kell leválasztani a DisconnectHandler() implementáció meghívásával.
Az alábbi példa a csatolt HandlerProperties.DisconnectPolicy
tulajdonság beállítását mutatja be:
<controls:Video x:Name="video"
HandlerProperties.DisconnectPolicy="Manual"
Source="video.mp4"
AutoPlay="False" />
A megfelelő C#-kód a következő:
Video video = new Video
{
Source = "video.mp4",
AutoPlay = false
};
HandlerProperties.SetDisconnectPolicy(video, HandlerDisconnectPolicy.Manual);
Emellett létezik egy DisconnectHandlers kiterjesztési metódus, amely leválasztja a kezelőket az adott IView-ről.
video.DisconnectHandlers();
A kapcsolat bontásakor a DisconnectHandlers metódus végigmegy a vezérlőfa mentén, amíg meg nem fejeződik, vagy el nem ér egy kézzel beállított házirenddel rendelkező vezérlőnél.
Többablakos támogatás
A .NET MAUI 9 lehetővé teszi, hogy egy adott ablakot a Mac Catalyst és a Windows előtérbe helyezzen a Application.Current.ActivateWindow
metódussal:
Application.Current?.ActivateWindow(windowToActivate);
Natív AOT-üzembe helyezés
A .NET MAUI 9-ben a natív AOT-telepítést választhatja iOS és Mac Catalyst rendszeren. A natív AOT-üzembe helyezés létrehoz egy .NET MAUI-alkalmazást, amely már előre le van fordítva natív kódra. Ez a következő előnyöket eredményezi:
- Csökkentett alkalmazáscsomag-méret, jellemzően akár 2,5-szer kisebb is lehet.
- Gyorsabb indítási idő, általában akár 2x gyorsabban.
- Gyorsabb létrehozási idő.
További információ: Natív AOT-telepítés iOS és Mac Catalyst.
Natív beágyazás
A .NET MAUI 9 teljes API-kat tartalmaz natív beágyazási forgatókönyvekhez, amelyeket korábban manuálisan kellett hozzáadni a projekthez:
var mauiApp = MauiProgram.CreateMauiApp();
#if ANDROID
var mauiContext = new MauiContext(mauiApp.Services, window);
#else
var mauiContext = new MauiContext(mauiApp.Services);
#endif
var mauiView = new MyMauiContent();
var nativeView = mauiView.ToPlatform(mauiContext);
Alternatívaként használhatja a ToPlatformEmbedded
metódust, amelynek átadja a Window
-et annak a platformnak, ahol az alkalmazás fut.
var mauiApp = MauiProgram.CreateMauiApp();
var mauiView = new MyMauiContent();
var nativeView = mauiView.ToPlatformEmbedded(mauiApp, window);
Mindkét példában a nativeView
a mauiView
platformspecifikus verziója.
Ha natív beágyazott alkalmazást szeretne elindítani a .NET MAUI 9-ben, hívja meg a UseMauiEmbeddedApp
objektum MauiAppBuilder
bővítménymetódusát:
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiEmbeddedApp<App>();
return builder.Build();
}
}
További információ: Natív beágyazási.
Projektsablonok
A .NET MAUI-alkalmazás projektsablonja magában foglalja egy teljesen működőképes todo-alkalmazás létrehozását a .NET MAUI syncfusion eszközkészletének vezérlőivel az adatok megjelenítéséhez és az SQLite-alapú helyi adatbázisba való megőrzéséhez. A teendő alkalmazás létrehozásához hozzon létre egy új projektet a Visual Studióban a .NET MAUI-alkalmazás projektsablon használatával, és jelölje be a A mintatartalom hozzáadása jelölőnégyzetet a További információk ablakban:
A teendőlista alkalmazás a .NET parancssori felületéről is létrehozható a --sample-content
vagy -sc
opcióval:
dotnet new maui --sample-content -n MyProject
A .NET MAUI 9 egy .NET MAUI Blazor Hybrid és Web App projektsablont is hozzáad a Visual Studióhoz, amely egy .NET MAUI Blazor Hibrid alkalmazással és egy Blazor-webalkalmazással hoz létre megoldást, amely közös kódot használ egy Razor-osztálykódtár-projektben.
A sablon a .NET parancssori felületéről is használható:
dotnet new maui-blazor-web -n MyProject
Erőforrás-szótárak
A .NET MAUI 9-ben a különálló XAML-ResourceDictionary (amely nem kód mögötti fájllal van alátámasztva) alapértelmezés szerint lefordítja az XAML-jét. Ha le szeretné tiltani ezt a viselkedést, adja meg <?xaml-comp compile="false" ?>
az XML-fejléc után.
Körülvágás
A teljes vágás mostantól támogatott, ha az $(TrimMode)
MSBuild tulajdonságot full
értékre állítja. További információ: .NET MAUI-alkalmazás optimalizálása.
Inkompatibilitások vágása
A következő .NET MAUI-funkciók nem kompatibilisek a teljes vágással, és a vágó eltávolítja őket:
- Kötési kifejezések, amelyeknél a kötési útvonal sztringre van állítva. Ehelyett használjon megkompilált kötéseket. További információ: Fordított kötés.
- Implicit konverziós operátorok, amikor inkompatibilis típusú értéket rendelnek egy XAML-tulajdonsághoz, vagy ha két különböző típusú tulajdonság használ adatkötést. Ehelyett meg kell adnia egy TypeConverter-t a típushoz, és csatolnia kell a típushoz a TypeConverterAttributesegítségével. További információ: TypeConverter definiálása implicit konverziós operátorhelyére.
- Az XAML betöltése futásidőben a LoadFromXaml bővítménymetódussal. Ez az XAML biztonságossá tehető az összes olyan típus megjegyzésével, amely futásidőben betölthető a
DynamicallyAccessedMembers
attribútummal vagy aDynamicDependency
attribútummal. Ez azonban nagyon gyakori hiba, és nem ajánlott. - Navigációs adatok fogadása a QueryPropertyAttributehasználatával. Ehelyett a IQueryAttributable felületet olyan típusokra kell implementálnia, amelyeknek el kell fogadniuk a lekérdezési paramétereket. További információ: Navigációs adatok feldolgozása egyetlen metódussal.
- A
SearchHandler.DisplayMemberName
tulajdonság. Ehelyett egy ItemTemplate-t kell megadnia, hogy meghatározza a SearchHandler eredmények megjelenését. További információ: Keresési eredmények elem megjelenésének meghatározása. - Dinamikus HybridWebView szerializálási funkciók használata miatt a
System.Text.Json
vezérlő. - Felhasználói felület testreszabása az
OnPlatform
XAML korrektúrakiterjesztéssel. Ehelyett a OnPlatform<T> osztályt kell használnia. További információ: Felhasználói felület megjelenésének testreszabása a platformalapján. - Felhasználói felület testreszabása az
OnIdiom
XAML korrektúrakiterjesztéssel. Ehelyett a OnIdiom<T> osztályt kell használnia. További információ: Felhasználói felület megjelenésének testreszabása az eszköz kifejezésialapján.
Trimming funkciókapcsolók
A .NET MAUI-nak vannak trimmer-irányelvei, más néven funkciókapcsolók, amelyek lehetővé teszik a kód megmaradását olyan funkciók esetében, amelyek nem trimmelhetők biztonságosan. Ezek a trimmer irányelvek akkor használhatók, ha a $(TrimMode)
buildtulajdonság full
értékre van beállítva, valamint natív AOT esetén.
MSBuild tulajdonság | Leírás |
---|---|
MauiEnableVisualAssemblyScanning |
Ha a true értékre van állítva, a .NET MAUI megvizsgálja a szerelvényeket a IVisual interfészt implementáló típusok és a [assembly:Visual(...)] attribútumok keresésére, majd regisztrálja ezeket a típusokat és attribútumokat. Alapértelmezés szerint ez az építési tulajdonság false értékre van állítva, ha a teljes levágás engedélyezve van. |
MauiShellSearchResultsRendererDisplayMemberNameSupported |
Ha false értékre van állítva, a SearchHandler.DisplayMemberName értéke figyelmen kívül lesz hagyva. Ehelyett egy ItemTemplate-t kell megadnia, hogy meghatározza a SearchHandler eredmények megjelenését. Alapértelmezés szerint ez a build tulajdonság false , ha a teljes metszés vagy a Natív AOT engedélyezve van. |
MauiQueryPropertyAttributeSupport |
Ha false értékre van állítva, [QueryProperty(...)] attribútumok nem használhatók a tulajdonságértékek beállítására navigáláskor. Ehelyett a IQueryAttributable felületet kell implementálnia a lekérdezési paraméterek elfogadásához. Alapértelmezés szerint ez a build tulajdonság false , ha a teljes metszés vagy a Natív AOT engedélyezve van. |
MauiImplicitCastOperatorsUsageViaReflectionSupport |
Ha false értékre van állítva, a .NET MAUI nem fog implicit konverziós operátorokat keresni az értékek egyik típusból a másikba való konvertálásakor. Ez hatással lehet a különböző típusú tulajdonságok közötti kötésekre, valamint egy más típusú kötésű objektum tulajdonságértékének beállítására. Ehelyett definiáljon egy TypeConverter-t a típushoz, és a TypeConverterAttribute attribútum használatával csatolja a típushoz. Alapértelmezés szerint ez a build tulajdonság false , ha a teljes metszés vagy a Natív AOT engedélyezve van. |
_MauiBindingInterceptorsSupport |
Ha false értékre van állítva, a .NET MAUI nem fogja elfogni a SetBinding metódusokra irányuló hívásokat, és nem próbálja meg lefordítani őket. Ez a buildtulajdonság alapértelmezés szerint true . |
MauiEnableXamlCBindingWithSourceCompilation |
Ha true értékre van állítva, a .NET MAUI az összes kötést lefordítja, beleértve azokat is, ahol a Source tulajdonságot használják. Ha engedélyezi ezt a funkciót, győződjön meg arról, hogy minden kötés a helyes x:DataType tartalmazza az összefordításhoz, vagy törölje az adattípust a x:Data={x:Null}} -el, ha a kötést nem kell összefordítani. Alapértelmezés szerint ez a build tulajdonság true , ha a teljes metszés vagy a Natív AOT engedélyezve van. |
MauiHybridWebViewSupported |
Ha false értékre van állítva, a HybridWebView vezérlő nem lesz elérhető. Alapértelmezés szerint ez a build tulajdonság false , ha a teljes metszés vagy a Natív AOT engedélyezve van. |
Ezek az MSBuild tulajdonságok egyenértékű AppContext kapcsolókkal is rendelkeznek:
- Az
MauiEnableVisualAssemblyScanning
MSBuild tulajdonsággal egyenértékű AppContext kapcsolóMicrosoft.Maui.RuntimeFeature.IsIVisualAssemblyScanningEnabled
néven ismert. - Az
MauiShellSearchResultsRendererDisplayMemberNameSupported
MSBuild tulajdonsággal egyenértékű AppContext kapcsolóMicrosoft.Maui.RuntimeFeature.IsShellSearchResultsRendererDisplayMemberNameSupported
néven ismert. - Az
MauiQueryPropertyAttributeSupport
MSBuild tulajdonsággal egyenértékű AppContext kapcsolóMicrosoft.Maui.RuntimeFeature.IsQueryPropertyAttributeSupported
néven ismert. - Az
MauiImplicitCastOperatorsUsageViaReflectionSupport
MSBuild tulajdonsággal egyenértékű AppContext kapcsolóMicrosoft.Maui.RuntimeFeature.IsImplicitCastOperatorsUsageViaReflectionSupported
néven ismert. - Az
_MauiBindingInterceptorsSupport
MSBuild tulajdonsággal egyenértékű AppContext kapcsolóMicrosoft.Maui.RuntimeFeature.AreBindingInterceptorsSupported
néven ismert. - Az
MauiEnableXamlCBindingWithSourceCompilation
MSBuild tulajdonsággal egyenértékű AppContext kapcsolóMicrosoft.Maui.RuntimeFeature.MauiEnableXamlCBindingWithSourceCompilationEnabled
néven ismert. - Az
MauiHybridWebViewSupported
MSBuild tulajdonsággal egyenértékű AppContext kapcsolóMicrosoft.Maui.RuntimeFeature.IsHybridWebViewSupported
néven ismert.
A funkciókapcsolók legegyszerűbben úgy használhatók, ha a megfelelő MSBuild tulajdonságot az alkalmazás projektfájljába (*.csproj) helyezik, ami miatt a kapcsolódó kód le lesz vágva a .NET MAUI-szerelvényekből.
Windows-alkalmazások üzembe helyezése
Új .NET MAUI-projekt hibakeresése és központi telepítésekor a .NET MAUI 9 alapértelmezett viselkedése egy csomagolatlan alkalmazás üzembe helyezése. További információ: .NET MAUI-alkalmazás üzembe helyezése és hibakeresése Windows.
XAML-fordító hibakódjai
A .NET MAUI 9-ben az XAML fordító hibakódjai XFC
-ről XC
-ra módosították az előtagjukat. Győződjön meg arról, hogy frissíti a $(WarningsAsErrors)
, $(WarningsNotAsErrors)
és $(NoWarn)
buildtulajdonságokat az alkalmazás projektfájljaiban, ha használják, az új előtagra való hivatkozáshoz.
XAML jelölőnyelvi kiterjesztések
Az IMarkupExtension, IMarkupExtension<T>, IValueProviderés IExtendedTypeConverter implementáló osztályokat a RequireServiceAttribute vagy AcceptEmptyServiceProviderAttributekell széljegyzetekkel elgépelni . Erre a .NET MAUI 9-ben bevezetett XAML fordítóoptimalizálás miatt van szükség, amely hatékonyabb kód generálását teszi lehetővé, ami segít csökkenteni az alkalmazás méretét és javítani a futtatókörnyezet teljesítményét.
A korrektúrabővítmények e attribútumokkal való megjegyzésekkel való megjelöléséről további információt szolgáltatókcímű témakörben talál.
Xcode-szinkronizálás
A .NET MAUI 9 xcode syncet (xcsync
) tartalmaz, amely lehetővé teszi az Xcode használatát apple-specifikus fájlok .NET-projektekkel való kezelésére, beleértve az eszközkatalógusokat, a plist fájlokat, a storyboardokat és a xib fájlokat. Az eszköz két fő paranccsal hoz létre egy ideiglenes Xcode-projektet egy .NET-projektből, és szinkronizálja az Xcode-fájlok módosításait a .NET-projektbe.
Fontos
Az xcsync jelenleg előzetes verzióban érhető el.
A dotnet build
a xcsync-generate
vagy xcsync-sync
parancsokkal hozhatja létre vagy szinkronizálhatja ezeket a fájlokat, és átadhat egy projektfájlt és további argumentumokat:
dotnet build /t:xcsync-generate
/p:xcSyncProjectFile=<PROJECT>
/p:xcSyncXcodeFolder=<TARGET_XCODE_DIRECTORY>
/p:xcSyncTargetFrameworkMoniker=<FRAMEWORK>
/p:xcSyncVerbosity=<LEVEL>
További információért lásd: Xcode szinkronizálás.
Elavult API-k
A .NET MAUI 9 néhány API-t elavulttá nyilvánít, amelyeket egy későbbi kiadásban teljesen el fognak távolítani.
Keret
A Frame vezérlő elavultként van megjelölve a .NET MAUI 9-ben, és egy későbbi kiadásban teljesen el lesz távolítva. A Border vezérlőt a helyén kell használni.
Ha egy Frame-t egy Border-re cserélünk, a Frame.BorderColor tulajdonságértéknek Border.Stroke tulajdonságértékké kell változnia, és a Frame.CornerRadius tulajdonságértéknek a Border.StrokeShape tulajdonságérték részévé kell változnia. Emellett szükség lehet a Margin
érték duplikálására Padding
értékként.
Az alábbi példa az XAML egyenértékű Frame és Border elemeit mutatja be:
<Frame BorderColor="DarkGray"
CornerRadius="5"
Margin="20"
HeightRequest="360"
HorizontalOptions="Center"
VerticalOptions="Center" />
<Border Stroke="DarkGray"
StrokeShape="RoundRectangle 5"
Margin="20"
Padding="20"
HeightRequest="360"
HorizontalOptions="Center"
VerticalOptions="Center" />
További információ: Szegély.
Főoldal
Ahelyett, hogy egy MainPage objektum Application tulajdonságával definiálja az alkalmazás első oldalát, be kell állítania a Page tulajdonságot egy Window-on mint az alkalmazás első oldala. Ez történik belsőleg a .NET MAUI-ban a MainPage tulajdonság beállításakor, így az elavultként megjelölt MainPage tulajdonság nem vált be viselkedésbeli változást.
Az alábbi példa a Page tulajdonság beállítását mutatja be egy Windowesetében, a CreateWindow
felülbírálás alkalmazásával.
public partial class App : Application
{
public App()
{
InitializeComponent();
}
protected override Window CreateWindow(IActivationState? activationState)
{
return new Window(new AppShell());
}
}
Azoknál az alkalmazásoknál, amelyekben csak egyetlen ablak van, a Application.Current.MainPage
tulajdonság helyett a Application.Current.Windows[0].Page
tulajdonságot elérő kódot kell használni. Több ablakkal rendelkező alkalmazások esetén használja a Application.Current.Windows
gyűjteményt a megfelelő ablak azonosításához, majd a Page
tulajdonság eléréséhez. Ezenkívül minden elem tartalmaz egy Window
tulajdonságot, amely akkor érhető el, ha az elem az aktuális ablak része, amelyből a Page
tulajdonság elérhető (Window.Page
). A platformkód a IWindow bővítménymetódussal lekérheti az alkalmazás Microsoft.Maui.Platform.GetWindow
objektumát.
Bár a MainPage tulajdonság megmarad a .NET MAUI 9-ben, egy későbbi kiadásban teljesen el lesz távolítva.
Kompatibilitási elrendezések
A Microsoft.Maui.Controls.Compatibility névtér kompatibilitási elrendezési osztályai elavultak.
Régi mértékhívások
A következő VisualElement mérési módszerek elavultak:
Ezek régi mértékmetelyek, amelyek nem működnek megfelelően a .NET MAUI elrendezési elvárásaival.
Csereként bevezettük a VisualElement.Measure(Double, Double) metódust. Ez a metódus azt a minimális méretet adja vissza, amire egy elemnek szüksége van ahhoz, hogy megjelenjen az eszközön. A margók ki vannak zárva a mérésből, de a mérettel együtt jelennek meg. Ez az előnyben részesített metódus a nézet mérésekor.
Emellett a SizeRequest szerkezet elavult. Ehelyett Size kell használni.
Frissítés .NET 8-ról .NET 9-re
A .NET MAUI-projektek .NET 8-ról .NET 9-re való frissítéséhez először telepítse a .NET 9-et és a .NET MAUI számítási feladatot Visual Studio 17.12+, vagy Visual Studio Code-tal, a .NET MAUI-bővítménysel és a .NET-tel és a .NET MAUI számítási feladatokkal, vagy a önálló telepítő és a dotnet workload install maui
paranccsal.
Projektfájl frissítése
A .NET MAUI-alkalmazás .NET 8-ról .NET 9-re való frissítéséhez nyissa meg az alkalmazás projektfájlját (.csproj), és módosítsa a Target Framework Monikers (TFM)-et 8-ról 9-re. Ha olyan TFM-et használ, mint például a net8.0-ios15.2
győződjön meg arról, hogy megfelel a platformverziónak, vagy teljesen eltávolítja. Az alábbi példa egy .NET 8-projekt TFM-eit mutatja be:
<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst;net8.0-tizen</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>
Az alábbi példa egy .NET 9-projekt TFM-eit mutatja be:
<TargetFrameworks>net9.0-android;net9.0-ios;net9.0-maccatalyst;net9.0-tizen</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net9.0-windows10.0.19041.0</TargetFrameworks>
Ha az alkalmazás projektfájlja a Microsoft.Maui.Controls
NuGet-csomag .NET 8-verziójára hivatkozik közvetlenül vagy a $(MauiVersion)
buildtulajdonságon keresztül, frissítse a fájlt egy .NET 9-es verzióra. Ezután távolítsa el a Microsoft.Maui.Controls.Compatibility
NuGet-csomag csomaghivatkozását, feltéve, hogy az alkalmazás nem használ semmilyen típust ebből a csomagból. Emellett frissítse a Microsoft.Extensions.Logging.Debug
NuGet-csomag csomaghivatkozását a legújabb .NET 9 kiadásra.
Ha az alkalmazás iOS-t vagy Mac Catalystot céloz meg, frissítse a $(SupportedOSPlatformVersion)
buildtulajdonságokat ezekhez a platformokhoz a 15.0-ra:
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">15.0</SupportedOSPlatformVersion>
Új .NET MAUI-projekt hibakeresése és üzembe helyezésekor a .NET 9 alapértelmezett viselkedése egy csomagolatlan alkalmazás üzembe helyezése. Ha ezt a viselkedést szeretnéd alkalmazni, olvasd el: Csomagolt .NET MAUI Windows-alkalmazás kicsomagolt formára való átalakítása.
A frissített alkalmazás első létrehozása előtt törölje a bin
és obj
mappákat. A buildelési hibák és figyelmeztetések a következő lépésekhez vezetnek.
XAML-fordító hibakódjainak frissítése
Az XAML fordító hibakódjai XFC
-ról XC
-ra módosították az előtagjukat, ezért frissítse az $(WarningsAsErrors)
, $(WarningsNotAsErrors)
és $(NoWarn)
buildtulajdonságokat az alkalmazás projektfájljában, ha használják, az új előtagra való hivatkozáshoz.
A lefordított kötésekre vonatkozó új XAML-fordítói figyelmeztetések kezelése
Építési figyelmeztetések jelennek meg a kompilált kötéseket nem használó kötésekhez, és ezeket kezelni kell. További információ: XAML által lefordított kötésekre vonatkozó figyelmeztetések.
XAML-jelölő kiterjesztések frissítése
Az XAML-jelölőbővítményeket vagy a RequireServiceAttribute, vagy a AcceptEmptyServiceProviderAttributecímkékkel kell ellátni. Erre az XAML fordítóoptimalizálás miatt van szükség, amely hatékonyabb kód generálását teszi lehetővé, ami segít csökkenteni az alkalmazás méretét és javítani a futtatókörnyezet teljesítményét. További információ: szolgáltatók.
Elavult API-k címe
A .NET MAUI 9 néhány API-t elavulttá nyilvánít, amelyeket egy későbbi kiadásban teljesen el fognak távolítani. Ezért foglalkozzon az elavult API-kkal kapcsolatos figyelmeztetésekkel a build során. További információ: Elavult API-k.
Lefordított kötések bevezetése a Forrás tulajdonság beállításához
A Source
tulajdonságot megadó kötések összeállításával kihasználhatja a futásidejű teljesítmény jobb kihasználását. További információért lásd: azokat a kötések fordítását, amelyek a Source
tulajdonságot határozzák meg.
Kompilált kötéseket alkalmazzon C#-ben
A kódban deklarált kötési kifejezések fordításával kihasználhatja a futásidejű teljesítmény jobb kihasználását. További információ: A kódbeli lefordított kötésekettekintse meg.
Teljes vágás bevezetése
A teljes vágás használatával csökkentheti az alkalmazás általános méretét, ha a $(TrimMode)
MSBuild tulajdonságot full
értékre állítja. További információ: .NET MAUI-alkalmazás optimalizálása.
NatívAOT-telepítés bevezetése támogatott platformokon
Natív AOT-üzembe helyezést választhat iOS és Mac Catalyst rendszeren. A natív AOT-üzembe helyezés létrehoz egy .NET MAUI-alkalmazást, amely már előre le van fordítva natív kódra. További információ: Natív AOT-telepítés iOS és Mac Catalyst.
.NET Androidra
A .NET 9-ben fejlesztett .NET for Android támogatja az API 35-öt, magában foglalja a buildidők csökkentésére, valamint az alkalmazások méretének optimalizálására és a teljesítmény javítására irányuló munkákat. A .NET 9-ben található Androidhoz készült .NET-ről a következő verzió megjegyzésekben talál további információt.
- .NET az Android 9-hez
- .NET for Android 9 RC2
- .NET for Android 9 RC1
- .NET for Android 9 Preview 7
- .NET for Android 9 Preview 6
- .NET for Android 9 Preview 5
- .NET for Android 9 Preview 4
- .NET for Android 9 Preview 3
- .NET for Android 9 Preview 2
- .NET for Android 9 Preview 1
Eszközcsomagok
Az androidos .NET a .NET 9-ben lehetővé teszi az eszközök külön csomagba való elhelyezését, más néven eszközcsomag. Ez lehetővé teszi olyan játékok és alkalmazások feltöltését, amelyek általában nagyobbak, mint a Google Play által megengedett alapcsomagméret. Ha ezeket az eszközöket egy külön csomagba helyezi, a 200 Mb-os alapcsomagméret helyett akár 2 Gb méretű csomagot is feltölthet.
Fontos
Az eszközcsomagok csak objektumokat tartalmazhatnak. Android .NET esetén ez olyan elemeket jelent, amelyek AndroidAsset
buildelési műveletet hajtanak végre.
A .NET MAUI-alkalmazások a MauiAsset
buildelési művelettel definiálják az objektumokat. Az eszközcsomagok a AssetPack
attribútumon keresztül adhatók meg:
<MauiAsset
Include="Resources\Raw\**"
LogicalName="%(RecursiveDir)%(Filename)%(Extension)"
AssetPack="myassetpack" />
Jegyzet
A további metaadatokat más platformok figyelmen kívül hagyják.
Ha adott elemeket szeretne elhelyezni egy eszközcsomagban, a Update
attribútummal definiálhatja a AssetPack
metaadatokat:
<MauiAsset Update="Resources\Raw\MyLargeAsset.txt" AssetPack="myassetpack" />
Az eszközcsomagok különböző kézbesítési lehetőségekkel rendelkezhetnek, amelyek szabályozzák, hogy az eszközök mikor telepíthetők az eszközön:
- A telepítési időcsomagok az alkalmazással egy időben települnek. Ez a csomagtípus akár 1 Gb méretű is lehet, de ezek közül csak egy lehet. Ez a kézbesítési típus
InstallTime
metaadatokkal van megadva. - A gyorskövető csomagok röviddel azután települnek, hogy az alkalmazás telepítése befejeződött. Az alkalmazás elindulhat az ilyen típusú csomagok telepítése közben, ezért az eszközök használata előtt ellenőrizze, hogy befejeződött-e a telepítés. Az ilyen típusú eszközcsomagok mérete akár 512 Mb is lehet. Ez a kézbesítési típus
FastFollow
metaadatokkal van megadva. - Az igény szerinti csomagok soha nem töltődnek le az eszközre, kivéve, ha az alkalmazás kifejezetten kéri. Az eszközcsomagok teljes mérete nem haladhatja meg a 2 Gb-ot, és legfeljebb 50 különálló eszközcsomaggal rendelkezhet. Ez a kézbesítési típus
OnDemand
metaadatokkal van megadva.
A .NET MAUI-alkalmazásokban a kézbesítés típusa a DeliveryType
attribútummal adható meg a MauiAsset
-en:
<MauiAsset Update="Resources\Raw\myvideo.mp4" AssetPack="myassetpack" DeliveryType="FastFollow" />
További információ az Android-eszközcsomagokról: Android-eszközcsomagok.
Android 15-támogatás
Az Androidhoz készült .NET a .NET 9-ben .NET-kötéseket ad hozzá Android 15-höz (API 35). Ezeknek az API-knak a létrehozásához frissítse a projekt célkeretét net9.0-android
:
<TargetFramework>net9.0-android</TargetFramework>
Jegyzet
Megadhatja a net9.0-android35
is cél keretrendszerként, de a 35-ös szám valószínűleg megváltozik a jövőbeli .NET-kiadásokban, hogy megfeleljenek az újabb Android operációs rendszerek kiadásainak.
64 bites architektúrák alapértelmezés szerint
A .NET 9-ben az Androidhoz készült .NET alapértelmezés szerint nem hozza létre a következő futtatókörnyezet-azonosítókat (RID-ket):
android-arm
android-x86
Ennek javítania kell a buildelési időket, és csökkentenie kell az Android-.apk
fájlok méretét. Vegye figyelembe, hogy a Google Play támogatja az alkalmazáscsomagok architektúránkénti felosztását.
Ha ezekhez az architektúrákhoz kell építenie, hozzáadhatja őket a projektfájlhoz (.csproj):
<RuntimeIdentifiers>android-arm;android-arm64;android-x86;android-x64</RuntimeIdentifiers>
Vagy több célzott projektben:
<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">android-arm;android-arm64;android-x86;android-x64</RuntimeIdentifiers>
Androidos marshal metódusok
A .NET 9 androidos marshal metódusainak fejlesztései megbízhatóbbá tették a funkciót az alkalmazásokban, de még nem ez az alapértelmezett. A funkció engedélyezése ~10% javulást eredményezett a tesztalkalmazások teljesítményében.
A projektfájlban (.csproj) engedélyezhetők androidos marshal metódusok a $(AndroidEnableMarshalMethods)
tulajdonságon keresztül:
<PropertyGroup>
<AndroidEnableMarshalMethods>true</AndroidEnableMarshalMethods>
</PropertyGroup>
A funkcióval kapcsolatos részletes információkért tekintse meg a GitHubon a funkció dokumentációját vagy a implementációt.
Vágási fejlesztések
A .NET 9-ben az Android API-szerelvények (Mono.Android.dll, Java.Interop.dll) mostantól teljesen vágáskompatibilisek. A teljes levágáshoz állítsa be a $(TrimMode)
tulajdonságot a projektfájlban (.csproj):
<PropertyGroup>
<TrimMode>Full</TrimMode>
</PropertyGroup>
Ez lehetővé teszi a trimming elemzők használatát is, így figyelmeztetések keletkeznek minden problémás C# kód esetén.
További információ: Vágás részletessége.
.NET iOS-hez
A .NET 9 iOS, tvOS, Mac Catalyst és macOS rendszeren az Xcode 16.0-t használja a következő platformverziókhoz:
- iOS: 18.0
- tvOS: 18.0
- Mac Catalyst: 18.0
- macOS: 15.0
Az iOS, tvOS, Mac Catalyst és macOS rendszereken elérhető .NET 9-ről a következő kibocsátási megjegyzésekben talál további információt:
- .NET 9
- .NET 9.0.1xx RC2
- .NET 9.0.1xx RC1
- .NET 9.0.1xx Preview 7
- .NET 9.0.1xx előzetes 6
- .NET 9.0.1xx Preview 5
- .NET 9.0.1xx Preview 4
- .NET 9.0.1xx preview 3
- .NET 9.0.1xx Preview 2
- .NET 9.0.1xx Preview 1
Kötések
Az iOS 9-hez készült .NET lehetővé teszi az iOS-kötések .NET több célverziójának támogatását. Előfordulhat például, hogy egy kódtárprojektnek két különálló iOS-verziót kell létrehoznia:
<TargetFrameworks>net9.0-ios17.0;net9.0-ios17.2</TargetFrameworks>
Ez két kódtárat hoz létre, egyet iOS 17.0-kötésekkel, egyet pedig iOS 17.2-kötésekkel.
Fontos
Egy alkalmazásprojektnek mindig a legújabb iOS SDK-t kell céloznia.
Vágási fejlesztések
A .NET 9-ben az iOS és a Mac Catalyst összeállítások (Microsoft.iOS.dll, Microsoft.MacCatalyst.dll stb.) mostantól teljesen trimmelhetők. A teljes levágáshoz állítsa be a $(TrimMode)
tulajdonságot a projektfájlban (.csproj):
<PropertyGroup>
<TrimMode>Full</TrimMode>
</PropertyGroup>
Ez lehetővé teszi a trimming elemzők használatát is, így figyelmeztetések keletkeznek minden problémás C# kód esetén.
További információ: Vágás részletessége.
Natív AOT iOS számára & és Mac Catalysthoz
Az iOS 9-hez készült .NET-ben az iOS és Mac Catalyst natív 'AOT' (Előfordítás) fordítása kihasználja a teljes optimalizálás előnyeit az alkalmazás csomagméretének csökkentésére és az indítási teljesítmény javítására. A NativeAOT a teljes trimmelésre épül, és egy új futtatókörnyezetet is alkalmaz.
Fontos
A funkció használatához az alkalmazásnak és a függőségeinek teljesen vághatónak kell lenniük.
A NativeAOT megköveteli, hogy az alkalmazásokat trimmer figyelmeztetések nélkül építsék fel, hogy bizonyítsuk, az alkalmazás megfelelően működik futásidőben.
Lásd még:
- A .NET 9újdonságai.
- .NET 9-hez készült jövőkép