Aracılığıyla paylaş


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

.NET 10'da .NET Çok Platformlu Uygulama Kullanıcı Arabirimi'nin (.NET MAUI) odağı, ürün kalitesini artırmaktır. .NET 10'da .NET MAUI'deki ü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 ilkesindenfarklıdır. Daha fazla bilgi için bkz. .NET MAUI destek ilkesi .

.NET 10'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.

Denetim geliştirmeleri

.NET 10'da .NET MAUI, denetim geliştirmeleri içerir.

CollectionView ve CarouselView

.NET 9'da .NET MAUI, iOS ve Mac Catalyst üzerinde CollectionView ve CarouselViewiçin performans ve kararlılık geliştirmeleri getiren iki isteğe bağlı işleyici içeriyor. .NET 10'da, bunlar CollectionView ve CarouselViewiçin varsayılan işleyicilerdir.

HybridWebView

HybridWebView, dönüş türü hakkında herhangi bir bilgi belirtmeden belirtilen JavaScript yöntemini çağıran bir InvokeJavaScriptAsync aşırı yüklemesi kazanır. Daha fazla bilgi için bkz. değer döndürmeyen JavaScript yöntemlerini çağırma.

SearchBar, arama simgesinin rengini ayarlayan SearchIconColor bağlanabilir bir özellik kazanır:

<SearchBar Placeholder="Search items..."
           SearchIconColor="Blue" />

Daha fazla bilgi için bkz. SearchBar.

Şalter

Switch, kapalı durumdayken anahtarın rengini ayarlayan bağlanabilir bir özellik olan OffColor'i elde eder.

<Switch OffColor="Red"
        OnColor="Green" />

Daha fazla bilgi için bkz. anahtar .

Tablo Görünümü

TableView kullanım dışı bırakıldı. Bunun yerine CollectionView kullanılmalıdır.

Mesajlaşma Merkezi

MessagingCenter .NET 10'da dahili hale getirilmiştir. Kodunuzda kullanımı, CommunityToolkit.Mvvm NuGet paketindeki WeakReferenceMessenger ile değiştirilebilir. Daha fazla bilgi için Messenger'e bakın.

Gölge

.NET 10'da, Microsoft.Maui.Controls ad alanında ShadowTypeConverter sınıfı artık geneldir.

Gölgelerin biçimlendirilmiş dizeler kullanılarak nasıl belirtilebileceği hakkında daha fazla bilgi için bkz. gölge .

Platform tümleştirmesi

SpeechOptions sınıfı, TextToSpeech işlevselliğini kullanırken konuşma hızını denetleen bir Rate özelliği kazanır. Daha fazla bilgi için bkz. Metinden Sese ayarları.

iOS ve Mac Catalyst uyumluluğu Erişilebilirlik Uzantıları

Aşağıdaki iOS uyumluluğu AccessibilityExtensions uzantı yöntemleri, Microsoft.Maui.Controls.Compatibility.Platform.iOS'de, kullanımdan kaldırılmıştır.

  • SetAccessibilityHint
  • SetAccessibilityLabel
  • SetAccessibilityHint
  • SetAccessibilityLabel

Bunun yerine, Microsoft.Maui.Platform.UpdateSemantics yöntemi kullanılmalıdır.

iOS ve Mac Catalyst MauiWebViewNavigationDelegate özelliklerini geçersiz kılma işlemleri

Microsoft.Maui.Platform ad alanında aşağıdaki MauiWebViewNavigationDelegate yöntemleri artık geçersiz kılınabilir:

  • DecidePolicy
  • DidFailNavigation
  • DidFailProvisionalNavigation
  • DidFinishNavigation

iOS ve Mac Catalyst'te mod sayfayı popover olarak göster

.NET 10 için .NET MAUI, iOS ve Mac Catalyst'te modal bir sayfayı popover olarak görüntüleyen platforma özgü bir özellik ekler. Page.ModalPopoverSourceView bağlanabilir özelliğini modaldan kaynağı tanımlayan bir View'e, açılır pencerenin kaynaklanacağı görünümdeki dikdörtgeni tanımlayan bir Rectangle'e Page.ModalPopoverRect bağlanabilir özelliğine ve Page.ModalPresentationStyle bağlanabilir özelliğini Popoverolarak ayarlayarak tüketilir.

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

Ardından, Navigation.PushModalAsync yöntemiyle modal sayfaya gidin.

Page modalPage = new PopoverPage(originButton, Rectangle.Empty);
await Navigation.PushModalAsync(modalPage);

Daha fazla bilgi için bkz. iOS ve Mac Catalyst'da modal bir sayfayı popover olarak görüntüleme.

XAML işaretleme uzantıları

FontImageExtension XAML işaretleme uzantısı kullanım dışı bırakıldı. Bunun yerine, FontImageSource türü kullanılmalıdır:

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

Kolaylık sağlamak için özellik öğesi söz dizimi de kullanılabilir:

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

Daha fazla bilgi için bkz. Yazı tipi simgelerini görüntüleme.

Android için .NET

.NET 10'da Android için .NET, API 36 ve JDK 21 desteği ekler ve derleme sürelerini azaltmaya ve performansı geliştirmeye yönelik çalışmalar içerir. .NET 10'da Android için .NET hakkında daha fazla bilgi için aşağıdaki sürüm notlarını inceleyin:

  • Android 10 Preview 2 için .NET
  • Android 10 Preview 1 için .NET

Android 16 (Baklava) beta 2 bağlamaları

Google, Android 16 (API-36) SDK'sının Beta 2 yayımladı. Bu önizleme API'lerini kullanmak için destek ekleniyor.

Android 16 önizleme API'sini hedeflemek için:

  • Android SDK Yöneticisi'ni kullanarak Android 16 (Baklava) platformunu indirin.
  • Projenizin TargetFramework'u net10.0-android36'e güncelleyin.

Android için .NET proje şablonları, 21 (Lollipop) yerine varsayılan $(SupportedOSPlatformVersion) olarak 24 (Nougat) belirtecek şekilde güncelleştirildi. Bu, Java varsayılan arabirim yöntemlerini kullanırken, "desugaring" işleminden kaynaklanan çalışma zamanı hatalarını önler.

.NET 10'da API 21 hala destekleniyor olsa da, beklenmeyen çalışma zamanı hatalarından kaçınmak için mevcut projeleri API 24'e güncelleştirmenizi öneririz.

dotnet run desteği

Daha önce dotnet run komutu, hangi Android cihazının veya öykünücünün kullanılacağını belirtmek için gereken parametreleri kabul etmediğinden Android projeleri için .NET için desteklenmiyordu.

.NET 10'da, Android projeleri için .NET, dotnet run komutu kullanılarak çalıştırılabilir:

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

$(AdbTarget) özelliği adb'e aktarılır. Daha fazla bilgi için developer.android.com adresinde kabuk komutları bölümüne bakın.

Varsayılan olarak etkin marshal yöntemleri

.NET 9'da, C# koduna Java çağrısı için gereken hazırlama yöntemlerini oluşturmanın yeni bir yolu başlangıç performansı iyileştirmeleri sağladı. Ancak, .NET 9'da varsayılan olarak kapalıydı.

.NET 10'da bunlar varsayılan olarak etkindir. Bu marshal yöntemleriyle ilgili sorunlar, genellikle başlatma sırasında askıda kalma olarak ortaya çıkar. .NET 9'da karşılaşmadığınız şekilde .NET 10 önizlemelerindeki başlatma sırasında bir takılma yaşıyorsanız, proje dosyanızda $(AndroidEnableMarshalMethods) MSBuild özelliğini false olarak ayarlayarak marshal yöntemlerini devre dışı bırakmayı deneyin.

<PropertyGroup>
    <AndroidEnableMarshalMethods>false</AndroidEnableMarshalMethods>
<PropertyGroup>

Bu işlem askıda kalma sorununu düzeltirse lütfen bir sorun oluşturun.

ArtifactFilename meta verileri @(AndroidMavenLibrary) öğesi için

@(AndroidMavenLibrary), .NET 9'a eklendi ve bir Java kütüphanesinin Maven'dan otomatik olarak indirilip bağlanmasına olanak tanır. Bu kitaplık genellikle {artifact.Id}-{artifact.Version}.[jar|aar]olarak adlandırılır. Ancak, bu bir standarda uymaz ve rastgele farklı olabilir.

.NET 10'da, alternatif bir dosya adına izin vermek için ArtifactFilename meta verilerini @(AndroidMavenLibrary) MSBuild öğesine ekleyebilirsiniz:

<ItemGroup>
    <AndroidMavenLibrary Include="com.facebook.react:react-android" Version="0.76.0" ArtifactFilename="react-android-0.76.0-release.aar" />
</ItemGroup>

Visual Studio tasarım zamanı derlemeleri artık aapt2 çağırmaz

Tasarım süresi derlemelerini hızlandırmak için aapt2 artık çağrılmaz. Bunun yerine, .aar dosyaları ve temel android kaynakları doğrudan ayrıştırılır. Bu, bazı birim testleri için tasarım zamanı derlemesinin süresini 2 saniyenin üzerindeyken 600 milisaniyenin altına düşürür.

JDK 21 ile derleme

Android projeleri için .NET artık JDK 21 ile oluşturulabilir.

generator çıkışı olası System.Reflection.Emit kullanımını önler

Uygulama başlatma ve genel performans, "Java'dan C#'a çağrı" kod yollarından System.Reflection.Emit isabet eden kod yolları kaldırılarak iyileştirilmiştir.

ApplicationAttribute.ManageSpaceActivity artık InvalidCastException atmıyor

ApplicationAttribute.ManageSpaceActivity özelliğinin ayarlanması .NET 10'da XAGJS7007 hatasına neden olmaz.

iOS için .NET

iOS, tvOS, Mac Catalyst ve macOS üzerinde .NET 10 aşağıdaki platform sürümlerini destekler:

  • iOS: 18.2
  • tvOS: 18.2
  • Mac Catalyst: 18.2
  • macOS: 15.2

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

Bilinen sorunlar hakkında bilgi için bkz. .NET 10 Bilinen sorunlar.

Trimmer uyarıları varsayılan olarak etkinleştirilmiştir.

Temel sınıf kitaplığının trimmer uyarıları ürettiği ve bu yüzden tüm trimmer uyarılarını düzeltmenin sizin için mümkün olmadığı durumlar nedeniyle, trimmer uyarıları daha önce gizlenmişti. Ancak.NET 9'da tüm iOS düzeltici uyarıları düzeltildi ve bu nedenle düzeltici uyarıları artık varsayılan olarak etkindir. Düzeltici uyarılarını devre dışı bırakmak için $(SuppressTrimAnalysisWarnings) MSBuild özelliğini proje dosyanızda true olarak ayarlayın:

<PropertyGroup>
    <SuppressTrimAnalysisWarnings>true</SuppressTrimAnalysisWarnings>
</PropertyGroup>

Kitaplıklarda özgün kaynakları paketleme

Kitaplık projeleri görsel taslaklar, xibs, özellik listeleri, görüntüler, CoreML modelleri ve doku atlasları gibi farklı paket kaynaklarına sahip olabilir ve derlenmiş kitaplıkta ekli kaynaklar olarak paketlenir.

Görsel taslakları veya xib'leri derleme veya özellik listelerini ve görüntülerini iyileştirme gibi bu kaynakları işleme, eklemeden önce yapılır, ancak bu işlem kitaplık derlemelerini karmaşıklaştırır çünkü:

  • Görsel taslakları/xibs derlemesi yalnızca Mac'te yapılabildiğinden Mac'te çalışması gerekir.
  • Apple'ın araç zincirine ihtiyaç duyar.
  • Uygulamayı oluştururken özgün kaynaklara göre karar verme işleminin gerçekleştirilmesini imkansız hale getirir.

Bu nedenle, .NET 9'da kitaplıklara özgün kaynağı ekleme desteği isteğe bağlı olarak eklendi ve .NET 10'da artık otomatik olarak devrede. Bu davranışı geri çevirmek için $(BundleOriginalResources) MSBuild özelliğini proje dosyanızda false olarak ayarlayın:

<PropertyGroup>
    <BundleOriginalResources>false</BundleOriginalResources>
</PropertyGroup>

Ayrıca bkz.

  • .NET MAUI yol haritası
  • .NET 10'deki yenilikler