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

.NET 8'de .NET MAUI'nin odak noktası kalitedir. .NET 8'de 689 sorunu kapatan 1618 çekme isteği birleştirildi. Bunlar .NET MAUI ekibinin yanı sıra .NET MAUI topluluğunun değişikliklerini de içerir. Bu değişiklikler .NET 8'de kalitenin önemli ölçüde artmasına neden olmalıdır.

Önemli

Xcode veya Android SDK Araçları gibi temel alınan dış bağımlılıklarla çalışma nedeniyle .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) destek ilkesi .NET ve .NET Core destek ilkesinden farklıdır. Daha fazla bilgi için bkz . .NET MAUI destek ilkesi.

.NET 8'de .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.

Bu makalede .NET 8 için .NET MAUI'nin yeni özellikleri listelenir ve her biri hakkında daha ayrıntılı bilgilerin bağlantıları sağlanır.

.NET 8'deki yenilikler hakkında bilgi için bkz . .NET 8'deki yenilikler.

Yeni işlevler

.NET MAUI'nin bu sürümünün odak noktası kalite olsa da, uygulamalarınızda yeni senaryolara olanak tanıyan bazı yeni işlevler de vardır.

Denetimler

  • Yumuşak giriş klavyesini gizlemeyi ve göstermeyi destekleyen metin girişi kazanç uzantısı yöntemlerini destekleyen denetimler. Daha fazla bilgi için bkz . Yumuşak giriş klavyesini gizleme ve gösterme.
  • sınıfı ContentPage , sayfada herhangi bir yere dokunulduğunda yumuşak giriş klavyesinin görünür olduğunda gizlenip gizlenmeyeceğini belirten bir HideSoftInputOnTapped özellik kazanır. Daha fazla bilgi için bkz . ContentPage.
  • BlazorWebView bir StartPath özellik, bir TryDispatchAsync yöntem ve gelişmiş günlük özellikleri kazanır. Daha fazla bilgi için bkz . BlazorWebView kullanarak .NET MAUI uygulamasında Blazor web uygulaması barındırma.
  • WebView bir UserAgent özellik kazanır. Daha fazla bilgi için bkz . WebView.
  • Otomatik yürütme ve resimdeki resim de dahil olmak üzere HTML5 videonun satır içi medya kayıttan yürütmesi, iOS'ta için varsayılan olarak WebView etkinleştirilmiştir. Daha fazla bilgi için bkz . iOS ve Mac Catalyst'te medya kayıttan yürütme tercihlerini ayarlama.
  • Grid.Add 5 bağımsız değişken kabul eden aşırı yükleme .NET MAUI'ye geri eklendi. Ancak, bu yöntem kullanım dışıdır ve yalnızca Xamarin.Forms'dan geçişlere yardımcı olmak için mevcuttur.
  • Gridbelirtilen satır ve sütuna, belirtilen satır ve sütun aralıklarıyla bir görünüm Grid ekleyen bir AddWithSpan uzantı yöntemi kazanır.

Masaüstü

  • Menü çubuğu öğeleri ve bağlam menüsü öğeleri, klavye hızlandırıcıları olarak bilinen klavye kısayolları aracılığıyla çağrılabilir. Daha fazla bilgi için bkz . Klavye hızlandırıcıları.
  • Windows uygulamaları paketlenmemiş uygulamalar olarak yayımlanabilir. Daha fazla bilgi için bkz . CLI ile Windows için paketlenmemiş bir .NET MAUI uygulaması yayımlama.

Hareket tanıyıcıları

Platform tümleştirmesi

XAML

Sorun giderme

Çeşitli

  • Pencere yönetimi sınıfından App ayrıştırılabilir. Daha fazla bilgi için bkz . Uygulama sınıfından pencere yönetimini ayırma.
  • Android uygulamalarında çeşitli sistem yazı tipleri kolayca kullanılabilir. Daha fazla bilgi için bkz . Yazı tiplerini kullanma.
  • iOS'ta, MauiUIApplicationDelegate temsilci aracılığıyla iOSLifecycle.PerformFetch geçersiz kılınabilecek veya tüketilebilen bir PerformFetch yöntem kazanır. Daha fazla bilgi için bkz . iOS platform yaşam döngüsü olayları.

Tür kullanımdan kaldırma ve kaldırma

Aşağıdaki türler veya üyeler kullanım dışı bırakıldı:

Aşağıdaki türler veya üyeler kaldırıldı:

Davranış değişiklikleri

Önceki sürümden itibaren aşağıdaki davranış değişmiştir:

  • XAML'den Map denetimin kullanılması artık şu xmlns ad alanı bildirimini gerektirir: xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps".
  • Yöntemiyle ImageSource.FromStream bir akıştan görüntü yüklenirken Android'de görüntü önbelleğe alma devre dışı bırakılır. Bunun nedeni, makul bir önbellek anahtarı oluşturmak için veri olmamasıdır.
  • iOS'ta, yumuşak giriş klavyesi metin giriş alanını kapladığında sayfalar otomatik olarak kaydırılır, böylece alan yumuşak giriş klavyesinin üzerinde olur. Bu KeyboardAutoManagerScroll.Disconnect varsayılan davranışı devre dışı bırakmak için ad alanında yöntemi Microsoft.Maui.Platform çağrılabilir. Yöntemi KeyboardAutoManagerScroll.Connect , devre dışı bırakıldıktan sonra davranışı yeniden etkinleştirmek için çağrılabilir.
  • Shell uygulamasında sekmenin renginin ayarlanması bazı platformlarda değişti. Daha fazla bilgi için bkz . Sekme görünümü.
  • Uygulamanızın proje dosyasında derleme özelliği için $(ApplicationIdGuid) bir değer belirtmek gerekli değildir. Bunun nedeni, .NET MAUI Windows uygulamalarının artık uygulama kimliği olarak GUID gerektirmediği ve bunun yerine derleme özelliğinin $(ApplicationId) değerini uygulama kimliği olarak kullanmasıdır. Bu nedenle, aynı ters etki alanı biçimi uygulama kimliği artık com.mycompany.myapp gibi tüm platformlarda kullanılır.
  • .NET MAUI Mac Catalyst uygulamaları artık menü çubuğundaki 50 menü öğesiyle sınırlı değildir.
  • PlatformImage.FromStream ad alanında Microsoft.Maui.Graphics yöntemi artık sınıfını kullanmak W2DImageLoadingService yerine Windows'a görüntü yüklemek için kullanılabilir.
  • Android'de animasyonlar sistem animasyon ayarlarına saygı gösterir. Daha fazla bilgi için bkz . Temel animasyon.

Performans

.NET MAUI 8'de birçok performans değişikliği vardır. Bu değişiklikler beş alanda sınıflandırılabilir:

Daha fazla bilgi için bkz . .NET MAUI'de .NET 8 Performans Geliştirmeleri.

.NET 7'den .NET 8'e yükseltme

Projelerinizi .NET 7'den .NET 8'e yükseltmek için Visual Studio 17.8+ ile veya tek başına yükleyici ve komutuyla .NET 8 ve dotnet workload install maui .NET MAUI iş yükünü yükleyin.

Daha sonra .csproj dosyanızı açın ve Hedef Çerçeve Takma Adlarını (TFM) 7'den 8'e değiştirin. Platform sürümüyle eşleştiğinden veya tamamen kaldırdığınızdan emin olmak gibi net7.0-ios13.6 bir TFM kullanıyorsanız. Aşağıdaki örnekte bir .NET 7 projesinin TFM'leri gösterilmektedir:

<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst;net7.0-tizen</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>

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 .NET MAUI NuGet paketleri için .csproj dosyanıza açık paket başvuruları da eklenmelidir:

<ItemGroup>
    <PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
    <PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
</ItemGroup>

$(MauiVersion) Değişkenine yüklediğiniz .NET MAUI sürümünden başvurulur. Derleme özelliğini .csproj dosyanıza ekleyerek $(MauiVersion) bunu geçersiz kılabilirsiniz:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
        <UseMaui>True</UseMaui>
        <MauiVersion>8.0.3</MauiVersion>
    </PropertyGroup>
</Project>

Bu, gecelik akıştan geçici derlemeler veya çekme isteklerinden indirilen derlemeler kullanılırken yararlı olabilir.

Ayrıca, $(ApplicationIdGuid) derleme özelliği .NET 8'deki .csproj dosyanızdan kaldırılabilir. Daha fazla bilgi için bkz . Davranış değişiklikleri.

Yükseltilen uygulamanızı ilk kez oluşturmadan önce ve obj klasörlerini bin silin.

Not

.NET 8'deki bir .NET MAUI uygulaması için proje şablonu, derleme özelliğiyle projenin null atanabilir bağlamını $(Nullable) etkinleştirir. Daha fazla bilgi için bkz . Null atanabilir.

Ayrıca bkz.