.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.
.NET 10'da .NET MAUI, denetim geliştirmeleri içerir.
.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, 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.
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 .
TableView kullanım dışı bırakıldı. Bunun yerine CollectionView kullanılmalıdır.
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.
.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 .
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ı.
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.
Microsoft.Maui.Platform
ad alanında aşağıdaki MauiWebViewNavigationDelegate
yöntemleri artık geçersiz kılınabilir:
DecidePolicy
DidFailNavigation
DidFailProvisionalNavigation
DidFinishNavigation
.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.
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.
.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:
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.
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.
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.
.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.
@(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>
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.
Android projeleri için .NET artık JDK 21 ile oluşturulabilir.
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
özelliğinin ayarlanması .NET 10'da XAGJS7007 hatasına neden olmaz.
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.
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ı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>
- .NET MAUI yol haritası
- .NET 10'deki yenilikler
.NET MAUI geri bildirimi
.NET MAUI, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: