Aracılığıyla paylaş


.NET 9 için .NET MAUI'deki yenilikler

.NET 9'da .NET Çok Platformlu Uygulama Kullanıcı Arabirimi 'nin (.NET MAUI) odağı, ürün kalitesini artırmaktır. Bu, test kapsamını genişletmeyi, uçtan uca senaryo testlerini ve hata düzeltmeyi içerir. .NET MAUI 9'daki ürün kalitesi iyileştirmeleri hakkında daha fazla bilgi için aşağıdaki sürüm notlarını inceleyin:

Önemli

Xcode veya Android SDK Araçları gibi dış bağımlılıklarla çalışma nedeniyle .NET MAUI destek ilkesi .NET ve .NET Core destek ilkesinden farklıdır. Daha fazla bilgi için bkz . .NET MAUI destek ilkesi.

.NET MAUI 9 ile derleme yaparken iOS 18, iPadOS 18, tvOS 18 ve macOS 15 için SDK desteği içeren Xcode 16 ile uyumluluk gereklidir. Xcode 16, macOS 14.5 veya üzerini çalıştıran bir Mac gerektirir.

.NET 9'da .NET MAUI bir .NET iş yükü ve birden çok NuGet paketi olarak sunulur. Bu yaklaşımın avantajı, projelerinizi belirli sürümlere kolayca sabitlemenize ve ayrıca yayınlanmamış veya deneysel derlemeleri kolayca önizlemenize olanak sağlamasıdır. Yeni bir .NET MAUI projesi oluşturduğunuzda, gerekli NuGet paketleri projeye otomatik olarak eklenir.

En düşük dağıtım hedefleri

.NET MAUI 9, iOS 12.2 ve Mac Catalyst 15.0 (macOS 12.0) için en düşük dağıtım hedeflerini gerektirir. Android ve Windows en düşük dağıtım hedefleri aynı kalır. Daha fazla bilgi için bkz . .NET MAUI uygulamaları için desteklenen platformlar.

Yeni denetimler

.NET MAUI 9 iki yeni denetim içerir.

HybridWebView

HybridWebView web görünümünde rastgele HTML/JS/CSS içeriği barındırmayı etkinleştirir ve web görünümündeki kod (JavaScript) ile web görünümünü barındıran kod (C#/.NET) arasında iletişim sağlar. Örneğin, mevcut bir React JS uygulamanız varsa, bunu platformlar arası bir .NET MAUI yerel uygulamasında barındırabilir ve C# ve .NET kullanarak uygulamanın arka ucunu oluşturabilirsiniz.

İhtiyacınız olan HybridWebView bir .NET MAUI uygulaması oluşturmak için:

  • Statik HTML, JavaScript, CSS, görüntüler ve diğer dosyalardan oluşan uygulamanın web içeriği.
  • HybridWebView Uygulamanın kullanıcı arabiriminin bir parçası olarak denetim. Bu, uygulamanın XAML'sinde başvurularak elde edilebilir.
  • İki bileşen arasında ileti göndermek için API'leri kullanan HybridWebView web içeriğindeki ve C#/.NET'teki kod.

Web içeriği de dahil olmak üzere uygulamanın tamamı paketlenmiş ve bir cihazda yerel olarak çalıştırılır ve ilgili uygulama mağazalarında yayımlanabilir. Web içeriği yerel bir web görünümü denetiminde barındırılır ve uygulama bağlamında çalışır. Uygulamanın herhangi bir bölümü dış web hizmetlerine erişebilir, ancak bunun için gerekli değildir.

Daha fazla bilgi için bkz . HybridWebView.

Windows için Başlık Çubuğu

Denetim, TitleBar Windows'ta uygulamanıza özel başlık çubuğu ekleme olanağı sağlar:

.NET MAUI Başlık Çubuğuna genel bakış.

herhangi TitleBar bir Window.TitleBarüzerinde özelliğinin TitleBar değeri olarak ayarlanabilir:

<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>

C# dilinde kullanımına bir örnek:

Window window = new Window
{
    TitleBar = new TitleBar
    {
        Icon = "titlebar_icon.png"
        Title = "My App",
        Subtitle = "Demo"
        Content = new SearchBar { ... }      
    }
};

ATitleBar, , Contentve LeadingContent özellikleri aracılığıyla TrailingContentyüksek oranda özelleştirilebilir:

<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="&#xE713;"
                                 FontFamily="SegoeMDL2"/>
            </ImageButton.Source>
        </ImageButton>
    </TitleBar.TrailingContent>
</TitleBar>

Aşağıdaki ekran görüntüsü, sonuçta elde edilen görünümü gösterir:

.NET MAUI Başlık Çubuğu ekran görüntüsü.

Not

Denetim için TitleBar Mac Catalyst desteği gelecek bir sürümde eklenecektir.

Daha fazla bilgi için bkz . TitleBar.

Denetim geliştirmeleri

.NET MAUI 9, denetim geliştirmeleri içerir.

BackButtonBehavior OneWay bağlama modu

Bir Shell uygulamasında için ve IsVisible üzerindeki IsEnabled bağlama modu BackButtonBehavior artık BindingMode.OneWay yerine BindingMode.OneTimeolur. Bu, veri bağlamalarıyla çalışma zamanında geri düğmesinin davranışını daha kolay denetlemenizi sağlar:

<ContentPage ...>    
    <Shell.BackButtonBehavior>
        <BackButtonBehavior Command="{Binding BackCommand}"
                            IsVisible="{Binding IsBackButtonVisible}"
                            IconOverride="back.png" />   
    </Shell.BackButtonBehavior>
    ...
</ContentPage>

BlazorWebView

bir BlazorWebView içerik barındırmak için varsayılan davranış 0.0.0.1olarak değiştirildi. İçeriği barındırmak için kullanılan iç 0.0.0.0 adres artık çalışmıyor ve hiçbir içeriğin yüklenmemesiyle sonuçlanıp BlazorWebView boş bir dikdörtgen olarak işleniyor.

Adresi kullanmayı 0.0.0.0 kabul etmek için MauiProgram.cs yöntemine CreateMauiAppaşağıdaki kodu ekleyin:

// Set this switch to use the LEGACY behavior of always using 0.0.0.0 to host BlazorWebView
AppContext.SetSwitch("BlazorWebView.AppHostAddressAlways0000", true);

Varsayılan olarak, BlazorWebView artık temel alınan WebViewManageröğesinin zaman uyumsuz atılması işlemini tetikler ve unutur. Bu, Android'de atma kilitlenmelerinin oluşma olasılığını azaltır.

Uyarı

Bu tetikle ve unut varsayılan davranışı, tüm nesneler atılmadan önce elden çıkarmanın geri dönebileceği ve bu da uygulamanızda davranış değişikliklerine neden olabileceği anlamına gelir. Atılan öğeler kısmen Blazor'ın kendi iç türleridir, ancak uygulamanızın bir bölümünde kullanılan BlazorWebView kapsamlı hizmetler gibi uygulama tanımlı türlerdir.

Bu davranışı geri çevirmek için uygulamanızı sınıfınızdaki yöntemindeki AppContext bir CreateMauiApp anahtar aracılığıyla dispose işlemini engelleyecek şekilde yapılandırmanız MauiProgram gerekir:

AppContext.SetSwitch("BlazorWebView.AndroidFireAndForgetAsync", false);

Uygulamanız bu anahtar aracılığıyla atma işlemini engelleyecek şekilde yapılandırılmışsa, BlazorWebView zaman uyumsuz eşitleme elden çıkarma işlemi gerçekleştirir; bu da zaman uyumsuz elden çıkarma tamamlanana kadar iş parçacığını engellediği anlamına gelir. Bununla birlikte, atma işleminin aynı iş parçacığında kod çalıştırması gerekiyorsa (iş parçacığı beklerken engellendiğinden) bu kilitlenmelere neden olabilir.

iOS'ta düğmeler

Button iOS'taki denetimler artık aralıklara, doldurmalara, kenarlık genişliğine ve kenar boşluklarına önceki sürümlere göre daha doğru şekilde saygı gösterir. içindeki büyük bir Button görüntü artık boşluk, doldurma, kenarlık genişliği ve kenar boşlukları dikkate alınarak boyut üst sınırına göre yeniden boyutlandırılır. Ancak, bir Button metin ve resim içeriyorsa, tüm içeriği düğmenin içine sığdırmak mümkün olmayabilir ve bu nedenle istediğiniz düzeni elde etmek için görüntünüzü el ile boyutlandırmanız gerekir.

CollectionView ve CarouselView

.NET MAUI 9, ve 'ye performans ve kararlılık iyileştirmeleri CollectionViewCarouselViewgetiren iOS ve Mac Catalyst üzerinde iki isteğe bağlı yeni işleyici içerir. Bu işleyiciler API'leri UICollectionView temel alır.

Bu işleyicileri kullanmayı kabul etmek için sınıfınıza MauiProgram aşağıdaki kodu ekleyin:

#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

ContentPage

.NET MAUI 9'da özellik Mac HideSoftInputOnTapped Catalyst ve Android ve iOS'ta da desteklenir.

Windows'ta odaklanma davranışı

Windows üzerinde .NET MAUI 8'de VisualElement.Focused olayı, VisualElement.Unfocused olayı ve VisualElement.IsFocused özelliği bir öğeye ve alt öğelerine uygulanır:

<VerticalStackLayout Focus="OnFocused">
    <Entry />
    <Editor />
</VerticalStackLayout>

.NET 8'deki bu örnekte, Windows üzerinde VerticalStackLayout, Entryveya Editor odaklandığında OnFocused olay işleyicisi çalıştırılır.

.NET MAUI 9, Windows'ta bu davranışı diğer platformlarla aynı olacak şekilde değiştirir. Bu nedenle, VisualElement.Focused olayı, VisualElement.Unfocused olayı ve VisualElement.IsFocused özelliği yalnızca bir öğe için geçerlidir. Bu nedenle, önceki örnek .NET 9 üzerinde çalıştığında, yalnızca giriş denetimleri odak kazanabileceğinden OnFocused olay işleyicisi yürütülemez.

Yumuşak klavye girişi desteği

.NET MAUI 9, , Passwordve Dateiçin Timeyeni yumuşak klavye girişi desteği ekler. Bunlar ve Editor denetimlerinde Entry etkinleştirilebilir:

<Entry Keyboard="Date" />

Metin hizalama

Numaralandırma, TextAlignment metin denetimlerindeki metni hizalamak için kullanılabilecek bir Justify üye ekler. Örneğin, ile Labelbir HorizontalTextAlignment.Justify içindeki metni yatay olarak hizalayabilirsiniz:

<Label Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. In facilisis nulla eu felis fringilla vulputate."
       HorizontalTextAlignment="Justify"/>

TimePicker

TimePicker seçilen zaman değiştiğinde tetiklenen bir TimeSelected olay kazanır. Olaya TimeChangedEventArgs eşlik eden nesne, TimeSelected sırasıyla yeni ve eski zamanı belirten ve NewTime özelliklerine sahiptirOldTime.

WebView

WebView bir işlem beklenmedik şekilde ProcessTerminated sona erdiğinde tetiklenen bir WebView olay ekler. WebViewProcessTerminatedEventArgs Bu olaya eşlik eden nesne, işlemin neden başarısız olduğunu gösteren platforma özgü özellikleri tanımlar.

Kodda derlenmiş bağlamalar

Kodda yazılan bağlamalar genellikle çalışma zamanında yansımayla çözümlenen dize yollarını kullanır ve bunu yapmanın yükü platformdan platforma değişir. .NET MAUI 9, dize yolu yerine bağımsız SetBinding değişken kullanarak bağlamaları tanımlayan ek Func bir uzantı yöntemi sağlar:

// in .NET 8
MyLabel.SetBinding(Label.TextProperty, "Text");

// in .NET 9
MyLabel.SetBinding(Label.TextProperty, static (Entry entry) => entry.Text);

Bu derlenmiş bağlama yaklaşımı aşağıdaki avantajları sağlar:

  • Bağlama ifadelerini çalışma zamanı yerine derleme zamanında çözümleyerek veri bağlama performansı iyileştirildi.
  • Geçersiz bağlamalar derleme hataları olarak bildirildiği için daha iyi bir geliştirici sorun giderme deneyimi.
  • Düzenlerken IntelliSense.

Derlenmiş bağlama tanımlamak için tüm yöntemler kullanılamaz. İfade basit bir özellik erişim ifadesi olmalıdır. Aşağıdaki örneklerde geçerli ve geçersiz bağlama ifadeleri gösterilmektedir:

// 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}";

Uyarı

Bir özellik veya dizin oluşturucu için ayarlanan erişimci erişilemezse CS0272 derleyici hatası oluşur. Bu durumda erişim elemanının erişilebilirliğini artırın.

Buna ek olarak, .NET MAUI 9 bağlamayı ile doğrudan nesnesine ayarlayan ve bağlama nesnesi örneğini döndüren bir BindingBase.Createyöntem eklerFunc:

// 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()
});

Önemli

NativeAOT uygulamalarında ve tam kırpma etkinleştirilmiş uygulamalarda dize tabanlı bağlamalar yerine derlenmiş bağlamalar gereklidir.

Koddaki derlenmiş bağlamalar hakkında daha fazla bilgi için bkz. kodda derlenmiş bağlamalar.

XAML'de derlenmiş bağlamalar

.NET MAUI 8'de, derlenmiş bağlamalar özelliği tanımlayan Source tüm XAML bağlama ifadeleri için devre dışı bırakılır ve çoklu bağlamalarda desteklenmez. Bu kısıtlamalar .NET MAUI 9'da kaldırılmıştır. Özelliğini tanımlayan Source XAML bağlama ifadelerini derleme hakkında bilgi için bkzSource tanımlayan bağlamaları derleme.

.NET MAUI 9 varsayılan olarak derlenmiş bağlamaları kullanmayan bağlamalar için derleme uyarıları oluşturur. XAML derlenmiş bağlama uyarıları hakkında daha fazla bilgi için bkz . XAML derlenmiş bağlama uyarıları.

Bağımlılık ekleme

Bir Shell uygulamasında, sayfanızın ömrünü kapsayıcıya göre , veya AddSingleton yöntemleriyle etkilemek istemediğiniz sürece, artık sayfalarınızı bağımlılık ekleme kapsayıcısına AddTransientAddScopedkaydetmeniz gerekmez. Bu yöntemler hakkında daha fazla bilgi için bkz . Bağımlılık ömrü.

İşleyici bağlantısının kesilmesi

İşleyicileri kullanarak özel bir denetim uygularken, olaylardan abonelikten kaldırma gibi herhangi bir yerel görünüm temizlemesi gerçekleştirmek için yöntemini uygulamak DisconnectHandler() için her platform işleyicisi uygulaması gerekir. Ancak,.NET MAUI 9'un DisconnectHandler() öncesinde uygulama kasıtlı olarak .NET MAUI tarafından çağrılmıyor. Bunun yerine, denetimi temizlemeyi seçerken (örneğin, bir uygulamada geriye doğru gezinirken) kendiniz çağırmanız gerekir.

.NET MAUI 9'da işleyiciler, bir uygulamada geriye doğru gezinirken olduğu gibi mümkün olduğunda denetimlerinin bağlantısını otomatik olarak keser. Bazı senaryolarda bu davranışı istemeyebilirsiniz. Bu nedenle, .NET MAUI 9, işleyicilerin denetimleriyle bağlantısının ne zaman kesildiğinde denetlemek için ekli bir HandlerProperties.DisconnectPolicy özellik ekler. Bu özellik, sabit listesi aşağıdaki değerleri tanımlayan bir HandlerDisconnectPolicy bağımsız değişken gerektirir:

  • Automatic, işleyicilerin otomatik olarak bağlantısının kesileceğini gösterir. Bu, eklenen özelliğin HandlerProperties.DisconnectPolicy varsayılan değeridir.
  • Manual, işleyicilerin uygulama çağrılarak el ile bağlantısının DisconnectHandler() kesilmesi gerektiğini gösterir.

Aşağıdaki örnekte, ekli özelliğin HandlerProperties.DisconnectPolicy ayarlanması gösterilmektedir:

<controls:Video x:Name="video"
                HandlerProperties.DisconnectPolicy="Manual"
                Source="video.mp4"
                AutoPlay="False" />

Eşdeğer C# kodu:

Video video = new Video
{
    Source = "video.mp4",
    AutoPlay = false
};
HandlerProperties.SetDisconnectPolicy(video, HandlerDisconnectPolicy.Manual);

Ayrıca, işleyicilerin belirli DisconnectHandlersbir ile bağlantısını kesen bir IView uzantı yöntemi vardır:

video.DisconnectHandlers();

Bağlantı kesilirken, DisconnectHandlers yöntem el ile ilke ayarlayan bir denetimi tamamlayana veya ulaşana kadar denetim ağacını aşağı doğru yayacaktır.

Çok pencereli destek

.NET MAUI 9, Mac Catalyst ve Windows'ta şu yöntemle Application.Current.ActivateWindow belirli bir pencereyi öne getirme olanağı sağlar:

Application.Current?.ActivateWindow(windowToActivate);

Yerel AOT dağıtımı

.NET MAUI 9'da iOS ve Mac Catalyst üzerinde Yerel AOT dağıtımını seçebilirsiniz. Yerel AOT dağıtımı, yerel koda derlenmiş, zamanından önce (AOT) olan bir .NET MAUI uygulaması oluşturur. Bu, aşağıdaki avantajları sağlar:

  • Uygulama paketi boyutu genellikle 2,5 kata kadar daha küçüktür.
  • Daha hızlı başlangıç süresi, genellikle 2 kata kadar daha hızlı.
  • Daha hızlı derleme süresi.

Daha fazla bilgi için bkz . iOS ve Mac Catalyst'te yerel AOT dağıtımı.

Yerel ekleme

.NET MAUI 9, daha önce projenize el ile eklenmesi gereken yerel ekleme senaryoları için tam API'ler içerir:

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);

Alternatif olarak, yöntemini kullanarak ToPlatformEmbedded uygulamanın çalıştığı platform için komutunu geçirebilirsiniz Window :

var mauiApp = MauiProgram.CreateMauiApp();
var mauiView = new MyMauiContent();
var nativeView = mauiView.ToPlatformEmbedded(mauiApp, window);

Her iki örnekte nativeView de platforma özgü bir sürümüdür mauiView.

.NET MAUI 9'da yerel eklenmiş bir uygulamayı önyüklemek için nesnenizde UseMauiEmbeddedApp uzantı yöntemini çağırınMauiAppBuilder:

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();

        builder
            .UseMauiEmbeddedApp<App>();

        return builder.Build();
    }
}

Daha fazla bilgi için bkz . Yerel ekleme.

Proje şablonları

.NET MAUI Uygulama proje şablonu, verileri görselleştirmek ve SQLite tabanlı yerel bir veritabanında kalıcı hale getirmek için .NET MAUI için Syncfusion Toolkit denetimlerini kullanarak tam işlevsel bir yapılacaklar uygulaması oluşturma özelliğini içerir. Bu yapılacaklar uygulamasını oluşturmak için Visual Studio'da .NET MAUI Uygulama projesi şablonunu kullanarak yeni bir proje oluşturun ve ardından Ek bilgi penceresinde Örnek içerik ekle onay kutusunu işaretleyin:

.NET MAUI uygulama projenize SyncFusion örnek sayfalarının nasıl ekleneceğini gösteren ekran görüntüsü.

Todo uygulaması veya seçeneğiyle --sample-content-sc .NET CLI'dan da oluşturulabilir:

dotnet new maui --sample-content -n MyProject

.NET MAUI 9 ayrıca Visual Studio'ya bir .NET MAUI Blazor Karma ve Web Uygulaması proje şablonu ekler. Bu şablon, Razor sınıf kitaplığı projesinde ortak kodu paylaşan blazor Web uygulamasıyla .NET MAUI Blazor Karma uygulamasıyla çözüm oluşturur.

Şablon .NET CLI'dan da kullanılabilir:

dotnet new maui-blazor-web -n MyProject

Kaynak sözlükleri

.NET MAUI 9'da, tek başına bir XAML ResourceDictionary (arka planda kod dosyası tarafından desteklenmeyen) varsayılan olarak XAML'sini derlemiştir. Bu davranışı geri çevirmek için XML üst bilgisinin ardından belirtin <?xaml-comp compile="false" ?> .

Kesme

MsBuild özelliği $(TrimMode)olarak ayarlanarak full tam kırpma artık desteklenmektedir. Daha fazla bilgi için bkz . .NET MAUI uygulamasını kırpma.

Kırpma uyumsuzlukları

Aşağıdaki .NET MAUI özellikleri tam kırpma ile uyumlu değildir ve düzeltici tarafından kaldırılacaktır:

Kırpma özelliği anahtarları

.NET MAUI' nin, kırpma güvenli olmayan özellikler için kodu korumayı mümkün hale getiren özellik anahtarları olarak bilinen düzeltici yönergeleri vardır. Bu düzeltici yönergeleri, derleme özelliği olarak ayarlandığında $(TrimMode)ve Yerel AOT için kullanılabilirfull:

MSBuild özelliği Açıklama
MauiEnableVisualAssemblyScanning olarak ayarlandığında true.NET MAUI, uygulayan IVisual türler ve öznitelikler için [assembly:Visual(...)] derlemeleri tarar ve bu türleri kaydeder. Varsayılan olarak, tam kırpma etkinleştirildiğinde bu derleme özelliği olarak ayarlanır false .
MauiShellSearchResultsRendererDisplayMemberNameSupported olarak ayarlandığında falsedeğeri SearchHandler.DisplayMemberName yoksayılır. Bunun yerine, sonuçların görünümünü ItemTemplate tanımlamak için bir SearchHandler sağlamanız gerekir. Varsayılan olarak, bu derleme özelliği tam kırpma veya Yerel AOT etkinleştirildiğinde olarak ayarlanır false .
MauiQueryPropertyAttributeSupport olarak ayarlandığında false, [QueryProperty(...)] gezinirken özellik değerlerini ayarlamak için öznitelikler kullanılmaz. Bunun yerine, sorgu parametrelerini kabul etmek için arabirimini uygulamanız IQueryAttributable gerekir. Varsayılan olarak, bu derleme özelliği tam kırpma veya Yerel AOT etkinleştirildiğinde olarak ayarlanır false .
MauiImplicitCastOperatorsUsageViaReflectionSupport olarak ayarlandığında false. .NET MAUI, değerleri bir türden diğerine dönüştürürken örtük dönüştürme işleçlerini aramaz. Bu, farklı türlerdeki özellikler arasındaki bağlamaları etkileyebilir ve bağlanabilir bir nesnenin özellik değerini farklı türde bir değerle ayarlayabilir. Bunun yerine, türünüz için bir TypeConverter tanımlamanız ve özniteliğini kullanarak türüne TypeConverterAttribute eklemeniz gerekir. Varsayılan olarak, bu derleme özelliği tam kırpma veya Yerel AOT etkinleştirildiğinde olarak ayarlanır false .
_MauiBindingInterceptorsSupport olarak ayarlandığında false.NET MAUI, yöntemlere SetBinding yapılan çağrıları engellemez ve bunları derlemeyi denemez. Varsayılan olarak, bu derleme özelliği olarak trueayarlanır.
MauiEnableXamlCBindingWithSourceCompilation olarak ayarlandığında true,NET MAUI özelliğin kullanıldığı bağlantılar Source da dahil olmak üzere tüm bağlamaları derler. Bu özelliği etkinleştirirseniz, tüm bağlamaların derlenecek şekilde doğru x:DataType olduğundan emin olun veya bağlama derlememesi gerekiyorsa ile veri türünü x:Data={x:Null}} temizleyin. Varsayılan olarak, bu derleme özelliği tam kırpma veya Yerel AOT etkinleştirildiğinde olarak ayarlanır true .
MauiHybridWebViewSupported olarak ayarlandığındafalseHybridWebView, denetim kullanılamaz. Varsayılan olarak, bu derleme özelliği tam kırpma veya Yerel AOT etkinleştirildiğinde olarak ayarlanır false .

Bu MSBuild özellikleri de eşdeğer AppContext anahtarlara sahiptir:

  • MSBuild özelliğinin MauiEnableVisualAssemblyScanning adlı AppContexteşdeğer Microsoft.Maui.RuntimeFeature.IsIVisualAssemblyScanningEnabled bir anahtarı vardır.
  • MSBuild özelliğinin MauiShellSearchResultsRendererDisplayMemberNameSupported adlı AppContexteşdeğer Microsoft.Maui.RuntimeFeature.IsShellSearchResultsRendererDisplayMemberNameSupported bir anahtarı vardır.
  • MSBuild özelliğinin MauiQueryPropertyAttributeSupport adlı AppContexteşdeğer Microsoft.Maui.RuntimeFeature.IsQueryPropertyAttributeSupported bir anahtarı vardır.
  • MSBuild özelliğinin MauiImplicitCastOperatorsUsageViaReflectionSupport adlı AppContexteşdeğer Microsoft.Maui.RuntimeFeature.IsImplicitCastOperatorsUsageViaReflectionSupported bir anahtarı vardır.
  • MSBuild özelliğinin _MauiBindingInterceptorsSupport adlı AppContexteşdeğer Microsoft.Maui.RuntimeFeature.AreBindingInterceptorsSupported bir anahtarı vardır.
  • MSBuild özelliğinin MauiEnableXamlCBindingWithSourceCompilation adlı AppContexteşdeğer Microsoft.Maui.RuntimeFeature.MauiEnableXamlCBindingWithSourceCompilationEnabled bir anahtarı vardır.
  • MSBuild özelliğinin MauiHybridWebViewSupported adlı AppContexteşdeğer Microsoft.Maui.RuntimeFeature.IsHybridWebViewSupported bir anahtarı vardır.

Özellik anahtarını kullanmanın en kolay yolu, ilgili MSBuild özelliğini uygulamanızın proje dosyasına (*.csproj) yerleştirmektir ve bu da ilgili kodun .NET MAUI derlemelerinden kesilmesine neden olur.

Windows uygulaması dağıtımı

Yeni bir .NET MAUI projesinde hata ayıklama ve Windows'a dağıtma sırasında,.NET MAUI 9'daki varsayılan davranış paketlenmemiş bir uygulama dağıtmaktır. Daha fazla bilgi için bkz . Windows'da .NET MAUI uygulamanızı dağıtma ve hatalarını ayıklama.

XAML derleyicisi hata kodları

.NET MAUI 9'da, XAML derleyicisi hata kodları ön eklerini olarak XFCXCdeğiştirdi. Yeni ön eke başvurmak için, uygulamanızın $(WarningsAsErrors)proje dosyalarında , $(WarningsNotAsErrors)ve $(NoWarn) derleme özelliklerini güncelleştirdiğinizden emin olun.

XAML biçimlendirme uzantıları

, , IMarkupExtensionIMarkupExtension<T>ve uygulayan IValueProviderve IExtendedTypeConverter veya RequireServiceAttributeile AcceptEmptyServiceProviderAttribute ek açıklama eklemesi gereken tüm sınıflar. Bu, uygulama boyutunu azaltmaya ve çalışma zamanı performansını geliştirmeye yardımcı olan daha verimli kod oluşturulmasını sağlayan .NET MAUI 9'da kullanıma sunulan bir XAML derleyici iyileştirmesi nedeniyle gereklidir.

Bu özniteliklerle işaretleme uzantılarına açıklama ekleme hakkında bilgi için bkz . Hizmet sağlayıcıları.

Xcode eşitleme

.NET MAUI 9, varlık katalogları, plist dosyaları, görsel taslaklar ve xib dosyaları dahil olmak üzere Apple'a özgü dosyaları .NET projeleriyle yönetmek için Xcode kullanmanızı sağlayan Xcode eşitlemesini (xcsync ) içerir. Araç, bir .NET projesinden geçici bir Xcode projesi oluşturmak ve Xcode dosyalarındaki değişiklikleri .NET projenize eşitlemek için iki ana komut içerir.

Önemli

xcsync şu anda önizleme aşamasındadır.

Bu dosyaları oluşturmak veya eşitlemek ve bir proje dosyası ile ek bağımsız değişkenler geçirmek için veya dotnet build komutlarıyla kullanırsınız:xcsync-generatexcsync-sync

dotnet build /t:xcsync-generate
    /p:xcSyncProjectFile=<PROJECT>
    /p:xcSyncXcodeFolder=<TARGET_XCODE_DIRECTORY>
    /p:xcSyncTargetFrameworkMoniker=<FRAMEWORK>
    /p:xcSyncVerbosity=<LEVEL>

Daha fazla bilgi için bkz . Xcode eşitleme.

Kullanım dışı API'ler

.NET MAUI 9, gelecek bir sürümde tamamen kaldırılacak olan bazı API'leri kullanım dışı bırakır.

Çerçeve

Denetim Frame .NET MAUI 9'da kullanım dışı olarak işaretlenir ve gelecek bir sürümde tamamen kaldırılacaktır. Denetimin Border yerine kullanılması gerekir.

Bir Frame, Borderile değiştirildiğinde, Frame.BorderColor özellik değeri Border.Stroke özellik değeri olmalı ve Frame.CornerRadius özellik değeri ise Border.StrokeShape özellik değerinin parçası olmalıdır. Ayrıca, Margin değerinin Padding değeri olarak çoğaltılması gerekebilir.

Aşağıdaki örnek, XAML'deki eşdeğer Frame ve Border öğelerini gösterir:

<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" />

Daha fazla bilgi için bkz . Kenarlık.

MainPage

Bir nesnedeki özelliğini MainPage kullanarak Application uygulamanızın ilk sayfasını tanımlamak yerine, özelliğini Page uygulamanızın ilk sayfasına ayarlamanız Window gerekir. Özelliği ayarladığınızda MainPage .NET MAUI'de dahili olarak olan budur, bu nedenle özelliğin MainPage kullanım dışı olarak işaretlenmesiyle ortaya çıkan bir davranış değişikliği yoktur.

Aşağıdaki örnekte, geçersiz kılma yoluyla bir Pageüzerinde özelliğinin ayarlanması Window gösterilmektedirCreateWindow:

public partial class App : Application
{
    public App()
    {
        InitializeComponent();
    }

    protected override Window CreateWindow(IActivationState? activationState)
    {
        return new Window(new AppShell());
    }
}

Özelliğine erişen kodun Application.Current.MainPage artık tek bir pencere ile uygulamalar için özelliğine Application.Current.Windows[0].Page erişmesi gerekir. Birden çok penceresi olan uygulamalar için doğru pencereyi tanımlamak ve ardından özelliğine Application.Current.Windows erişmek için koleksiyonunu kullanınPage. Buna ek olarak, her öğe, öğe geçerli pencerenin parçası olduğunda erişilebilen ve özelliğine Window erişilebilen (Page ) bir Window.Page özellik içerir. Platform kodu, uzantı yöntemiyle IWindow uygulamanın Microsoft.Maui.Platform.GetWindow nesnesini alabilir.

MainPage Özellik .NET MAUI 9'da korunsa da, gelecek bir sürümde tamamen kaldırılacaktır.

Uyumluluk düzenleri

Ad alanında Microsoft.Maui.Controls.Compatibility uyumluluk düzeni sınıfları engellendi.

Eski ölçü çağrıları

Aşağıdaki VisualElement ölçü yöntemleri engellendi:

Bunlar .NET MAUI düzen beklentileriyle düzgün çalışmayan eski ölçü yöntemleridir.

Bunun yerine VisualElement.Measure(Double, Double) yöntemi kullanıma sunulmuştur. Bu yöntem, bir öğenin cihazda görüntülenmesi için gereken en düşük boyutu döndürür. Kenar boşlukları ölçünün dışında tutulur, ancak boyutuyla döndürülür. Bu, görünümü ölçerken çağrılmak için tercih edilen yöntemdir.

Ek olarak, SizeRequest yapı engellenmiştir. Size Bunun yerine kullanılmalıdır.

.NET 8'den .NET 9'a yükseltme

.NET MAUI projelerinizi .NET 8'den .NET 9'a yükseltmek için, önce .NET 9 ve .NET MAUI iş yükünü Visual Studio 17.12+ veya Visual Studio Code ile .NET MAUI uzantısı ve .NET maui iş yükleri ya da tek başına yükleyiciyükleyin.

Proje dosyasını güncelleştirme

.NET MAUI uygulamanızı .NET 8'den .NET 9'a güncelleştirmek için uygulamanın proje dosyasını (.csproj) açın ve Hedef Çerçeve Takma Adlarını (TFM) 8'den 9'a değiştirin. Platform sürümüyle eşleştiğinden veya tamamen kaldırdığınızdan emin olmak gibi net8.0-ios15.2 bir TFM kullanıyorsanız. Aşağıdaki örnekte bir .NET 8 projesinin TFM'leri gösterilmektedir:

<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>

Aşağıdaki örnekte bir .NET 9 projesinin TFM'leri gösterilmektedir:

<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>

Uygulamanızın proje dosyası doğrudan veya derleme özelliği aracılığıyla NuGet paketinin Microsoft.Maui.Controls .NET 8 sürümüne $(MauiVersion) başvuruda bulunursa, bunu bir .NET 9 sürümüne güncelleştirin. Ardından, uygulamanızın bu paketten Microsoft.Maui.Controls.Compatibility herhangi bir tür kullanmaması koşuluyla NuGet paketinin paket başvurularını kaldırın. Ayrıca, NuGet paketinin paket başvurularını Microsoft.Extensions.Logging.Debug en son .NET 9 sürümüne güncelleştirin.

Uygulamanız iOS veya Mac Catalyst'i hedeflediyse, bu platformların $(SupportedOSPlatformVersion) derleme özelliklerini 15.0 olarak güncelleştirin:

<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">15.0</SupportedOSPlatformVersion>

Yeni bir .NET MAUI projesinde hata ayıklama ve Windows'a dağıtma sırasında, .NET 9'daki varsayılan davranış paketlenmemiş bir uygulama dağıtmaktır. Bu davranışı benimsemek için bkz . Paketlenmiş bir .NET MAUI Windows uygulamasını paketten çıkarılmaya dönüştürme.

Yükseltilen uygulamanızı ilk kez oluşturmadan önce ve bin klasörlerini obj silin. Derleme hataları ve uyarıları sonraki adımlarda size yol gösterir.

XAML derleyicisi hata kodlarını güncelleştirme

XAML derleyicisi hata kodları ön ekini olarak XFC değiştirdi, bu nedenle, yeni öneklere XCbaşvurmak için uygulamanızın proje dosyasındaki , $(WarningsAsErrors)ve $(WarningsNotAsErrors) derleme özelliklerini güncelleştirin$(NoWarn).

Derlenmiş bağlamalar için yeni XAML derleyici uyarılarını ele alın

Derlenmiş bağlamaları kullanmayan bağlamalar için derleme uyarıları oluşturulacak ve bunların ele alınması gerekecektir. Daha fazla bilgi için bkz . XAML derlenmiş bağlama uyarıları.

XAML işaretleme uzantılarını güncelleştirme

XAML işaretleme uzantılarına veya RequireServiceAttributeile AcceptEmptyServiceProviderAttribute ek açıklama eklenmelidir. Bu, uygulama boyutunu azaltmaya ve çalışma zamanı performansını geliştirmeye yardımcı olan daha verimli kod oluşturulmasını sağlayan bir XAML derleyici iyileştirmesi nedeniyle gereklidir. Daha fazla bilgi için bkz . Hizmet sağlayıcıları.

Adres kullanım dışı API'ler

.NET MAUI 9, gelecek bir sürümde tamamen kaldırılacak olan bazı API'leri kullanım dışı bırakır. Bu nedenle, kullanım dışı bırakılan API'ler hakkındaki derleme uyarılarını ele alın. Daha fazla bilgi için bkz . Kullanım dışı API'ler.

Source özelliğini ayarlayan derlenmiş bağlamaları benimseme

Daha iyi çalışma zamanı performansından yararlanmak için özelliğini ayarlayan Source bağlamaları derlemeyi tercih edebilirsiniz. Daha fazla bilgi için bkzSource tanımlayan bağlamaları derleme.

C'de derlenmiş bağlamaları benimseme#

Daha iyi çalışma zamanı performansından yararlanmak için kodda bildirilen bağlama ifadelerini derlemeyi tercih edebilirsiniz. Daha fazla bilgi için bkz . Kodda derlenmiş bağlamalar.

Tam kırpmayı benimseme

MSBuild özelliğini $(TrimMode)olarak ayarlayarak full uygulamanızın genel boyutunu küçültmek için tam kırpmayı kullanmayı benimseyebilirsiniz. Daha fazla bilgi için bkz . .NET MAUI uygulamasını kırpma.

Desteklenen platformlarda NativeAOT dağıtımlarını benimseme

iOS ve Mac Catalyst'te Yerel AOT dağıtımlarını kabul edebilirsiniz. Yerel AOT dağıtımı, yerel koda derlenmiş, zamanından önce (AOT) olan bir .NET MAUI uygulaması oluşturur. Daha fazla bilgi için bkz . iOS ve Mac Catalyst'te yerel AOT dağıtımı.

Android için .NET

API 35 desteği ekleyen .NET 9'da Android için .NET, derleme sürelerini azaltmaya ve boyutu küçültmek ve performansı geliştirmek için uygulamaların kırpılabilirliğini geliştirmeye yönelik çalışmalar içerir. .NET 9'da Android için .NET hakkında daha fazla bilgi için aşağıdaki sürüm notlarını inceleyin:

Varlık paketleri

.NET 9'da Android için .NET, varlıkları varlık paketi olarak bilinen ayrı bir pakete yerleştirme olanağı sunar. Bu, normalde Google Play'in izin verdiği temel paket boyutundan daha büyük olan oyunları ve uygulamaları karşıya yüklemenizi sağlar. Bu varlıkları ayrı bir pakete yerleştirerek, 200 Mb'lık temel paket boyutu yerine 2 Gb'a kadar olan bir paketi karşıya yükleme olanağı elde edebilirsiniz.

Önemli

Varlık paketleri yalnızca varlıkları içerebilir. Android için .NET söz konusu olduğunda bu, derleme eylemine AndroidAsset sahip öğeler anlamına gelir.

.NET MAUI uygulamaları, derleme eylemi aracılığıyla MauiAsset varlıkları tanımlar. Varlık paketi şu öznitelik aracılığıyla AssetPack belirtilebilir:

<MauiAsset
    Include="Resources\Raw\**"
    LogicalName="%(RecursiveDir)%(Filename)%(Extension)"
    AssetPack="myassetpack" />

Not

Ek meta veriler diğer platformlar tarafından yoksayılır.

Varlık paketine yerleştirmek istediğiniz belirli öğeleriniz varsa meta verileri tanımlamak için özniteliğini Update kullanabilirsinizAssetPack:

<MauiAsset Update="Resources\Raw\MyLargeAsset.txt" AssetPack="myassetpack" />

Varlık paketleri, varlıklarınızın cihaza ne zaman yükleneceğini denetleyen farklı teslim seçeneklerine sahip olabilir:

  • Yükleme zaman paketleri uygulamayla aynı anda yüklenir. Bu paket türünün boyutu 1 Gb'a kadar olabilir, ancak bunlardan yalnızca birine sahip olabilirsiniz. Bu teslim türü meta verilerle belirtilir InstallTime .
  • Hızlı takip paketleri, uygulamanın yüklenmesi tamamlandıktan kısa bir süre sonra yüklenir. Bu tür bir paket yüklenirken uygulama başlatılabilir, bu nedenle varlıkları kullanmaya çalışmadan önce yüklenmesinin tamamlandığını denetlemeniz gerekir. Bu tür bir varlık paketi boyutu 512 Mb'a kadar olabilir. Bu teslim türü meta verilerle belirtilir FastFollow .
  • İsteğe bağlı paketler, uygulama özellikle istemediği sürece cihaza hiçbir zaman indirilmeyecektir. Tüm varlık paketlerinizin toplam boyutu 2 Gb'ı aşamaz ve en fazla 50 ayrı varlık paketiniz olabilir. Bu teslim türü meta verilerle belirtilir OnDemand .

.NET MAUI uygulamalarında, teslim türü üzerinde DeliveryTypeözniteliğiyle MauiAsset belirtilebilir:

<MauiAsset Update="Resources\Raw\myvideo.mp4" AssetPack="myassetpack" DeliveryType="FastFollow" />

Android varlık paketleri hakkında daha fazla bilgi için bkz . Android varlık paketleri.

Android 15 desteği

.NET 9'da Android için .NET, Android 15 (API 35) için .NET bağlamaları ekler. Bu API'ler için derleme yapmak için projenizin hedef çerçevesini olarak net9.0-androidgüncelleştirin:

<TargetFramework>net9.0-android</TargetFramework>

Not

Hedef çerçeve olarak da belirtebilirsiniz net9.0-android35 , ancak 35 sayısı büyük olasılıkla gelecek .NET sürümlerinde daha yeni Android işletim sistemi sürümleriyle eşleşecek şekilde değişecektir.

Varsayılan olarak 64 bit mimariler

.NET 9'da Android için .NET artık varsayılan olarak aşağıdaki çalışma zamanı tanımlayıcılarını (RID) oluşturmaz:

  • android-arm
  • android-x86

Bu, derleme sürelerini geliştirmeli ve Android .apk dosyalarının boyutunu azaltmalıdır. Google Play'in uygulama paketlerini mimari başına bölmeyi desteklediğini unutmayın.

Bu mimariler için derlemeniz gerekiyorsa bunları proje dosyanıza (.csproj) ekleyebilirsiniz:

<RuntimeIdentifiers>android-arm;android-arm64;android-x86;android-x64</RuntimeIdentifiers>

Veya çok hedefli bir projede:

<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">android-arm;android-arm64;android-x86;android-x64</RuntimeIdentifiers>

Android marshal yöntemleri

.NET 9'daki Android hazırlama yöntemlerinde yapılan iyileştirmeler, özelliğin uygulamalarda daha güvenilir çalışmasını sağladı, ancak henüz varsayılan değildir. Bu özelliğin etkinleştirilmesi, bir test uygulamasında performansta yaklaşık %10'lık bir iyileştirmeye neden oldu.

Proje dosyanızda (.csproj) Android marshal yöntemleri şu özellik aracılığıyla $(AndroidEnableMarshalMethods) etkinleştirilebilir:

<PropertyGroup>
    <AndroidEnableMarshalMethods>true</AndroidEnableMarshalMethods>
</PropertyGroup>

Özellik hakkında belirli ayrıntılar için GitHub'da özellik belgelerine veya uygulamasına bakın.

Kırpma geliştirmeleri

.NET 9'da Android API derlemeleri (Mono.Android.dll, Java.Interop.dll) artık tamamen kırpma uyumlu. Tam kırpmayı kabul etmek için proje dosyanızda ($(TrimMode)) özelliğini ayarlayın:

<PropertyGroup>
    <TrimMode>Full</TrimMode>
</PropertyGroup>

Bu ayrıca, sorunlu C# kodları için uyarılar sunulması için çözümleyicileri kırpmaya da olanak tanır.

Daha fazla bilgi için bkz . Ayrıntı düzeyini kırpma.

iOS için .NET

iOS, tvOS, Mac Catalyst ve macOS üzerinde .NET 9, aşağıdaki platform sürümleri için Xcode 16.0 kullanır:

  • iOS: 18.0
  • tvOS: 18.0
  • Mac Catalyst: 18.0
  • macOS: 15.0

iOS, tvOS, Mac Catalyst ve macOS'ta .NET 9 hakkında daha fazla bilgi için aşağıdaki sürüm notlarına bakın:

Bağlamalar

iOS 9 için .NET, iOS bağlamaları için .NET'in çok hedefli sürümlerinin kullanılabilmesini sağlar. Örneğin, bir kitaplık projesinin iki ayrı iOS sürümü için derlemesi gerekebilir:

<TargetFrameworks>net9.0-ios17.0;net9.0-ios17.2</TargetFrameworks>

Bu, biri iOS 17.0 bağlamalarını ve biri iOS 17.2 bağlamalarını kullanan iki kitaplık oluşturur.

Önemli

Bir uygulama projesi her zaman en son iOS SDK'sını hedeflemelidir.

Kırpma geliştirmeleri

.NET 9'da iOS ve Mac Catalyst derlemeleri (Microsoft.iOS.dll, Microsoft.MacCatalyst.dll vb.) artık tamamen kırpma uyumlu. Tam kırpmayı kabul etmek için proje dosyanızda ($(TrimMode)) özelliğini ayarlayın:

<PropertyGroup>
    <TrimMode>Full</TrimMode>
</PropertyGroup>

Bu ayrıca, sorunlu C# kodları için uyarılar sunulması için çözümleyicileri kırpmaya da olanak tanır.

Daha fazla bilgi için bkz . Ayrıntı düzeyini kırpma.

iOS ve Mac Catalyst için yerel AOT

iOS 9 için .NET'te, iOS ve Mac Catalyst için yerel Zamanından Önce (AOT) derlemesi, uygulamanızın paket boyutunu ve başlangıç performansını azaltmak için tam kırpmadan yararlanır. NativeAOT, yeni bir çalışma zamanını da kabul ederek tam kırpmayı kullanır.

Önemli

Uygulamanızın ve bağımlılıklarının bu özelliği kullanabilmesi için tamamen kırpılabilir olması gerekir.

NativeAOT, uygulamanın çalışma zamanında doğru şekilde çalışacağını kanıtlamak için uygulamaların sıfır düzeltici uyarısıyla derlenmesini gerektirir.

Ayrıca bkz.