.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:
- .NET MAUI, .NET 10 Önizleme 2'de
- .NET 10 Preview 1'de .NET MAUI
Ö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.
Arama Çubuğu
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 Popover
olarak 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 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
'unet10.0-android36
'e güncelleyin.
Önerilen desteklenen en düşük Android API'si
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:
- .NET 10.0.1xx Preview 2
- .NET 10.0.1xx Preview 1
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