.NET 5 - Bilmeniz gereken son değişiklikler

.NET 5 ile birlikte gelen ve bilmeniz gereken bazı önemli değişiklikler de var.
.NET 5 inanılmaz! Ama … evet, bir ama var. Tüm iyi şeylerle birlikte daha az iyi şeylere de gelir. Sonuçta, birkaç yumurtayı kırmadan omlet yapmak imkansızdır ve .NET 5 bir istisna değildir. .NET Core 3.1’den .NET 5’e geçiş yapmaya çalışırsanız, birkaç önemli değişiklikle karşılaşabilirsiniz. Bu geçişe başlamadan ve tüm yeni özelliklerden yararlanmadan önce, neyin bozulabileceğini düşündüğünüzden emin olun.
ASP.NET Core
- ASP.NET Core uygulamaları, alıntılanan sayıların serisinin kaldırılmasına izin verir
- Kimlik doğrulama: AzureAD.UI ve AzureADB2C.UI API’leri ve eski olarak işaretlenen paketler
- Yetkilendirme: Uç nokta yönlendirmesindeki kaynak HttpContext’dir
- Azure: Microsoft önekli Azure tümleştirme paketleri kaldırıldı
- Blazor: Derleme zamanında bileşenlerden kırpılan önemsiz boşluk
- Blazor: JSObjectReference ve JSInProcessObjectReference türleri dahili olarak değiştirildi
- Blazor: ProtectedBrowserStorage özelliği paylaşılan çerçeveye taşındı
- Blazor: RenderTreeFrame salt okunur genel alanlar özellik haline geldi
- Blazor: NuGet paketlerinin hedef çerçevesi değiştirildi
- Blazor: Güncellenmiş tarayıcı desteği
- Uzantılar: Bazı NuGet paketlerini etkileyen paket başvurusu değişiklikleri
- HTTP: IHttpClientFactory günlük tamsayı durum kodları tarafından oluşturulan HttpClient örnekleri
- HTTP: Kestrel ve IIS BadHttpRequestException türleri geçersiz olarak işaretlendi ve değiştirildi
- HttpSys: İstemci sertifikası yeniden anlaşması varsayılan olarak devre dışı bırakıldı
- IIS: UrlRewrite ara yazılım sorgu dizeleri korunur
- Kestrel: Çalıştırma zamanında yapılandırma değişiklikleri varsayılan olarak algılandı
- Kestrel: Varsayılan desteklenen TLS protokol sürümleri değiştirildi
- Kestrel: HTTP / 2, uyumsuz Windows sürümlerinde TLS üzerinden devre dışı bırakıldı
- Kestrel: Eski olarak işaretlenmiş Libuv taşıması
- Yerelleştirme: “Pubternal” API’ler kaldırıldı
- Yerelleştirme: Eski kurucu, istek yerelleştirme ara yazılımında kaldırıldı
- Yerelleştirme: ResourceManagerWithCultureStringLocalizer sınıfı ve WithCulture arabirim üyesi kaldırıldı
- Ara yazılım: Eski olarak işaretlenmiş veritabanı hata sayfası
- Middleware: Exception Handler Middleware, işleyici bulunmazsa orijinal istisna atar
- MVC: ObjectModelValidator, yeni bir ValidationVisitor aşırı yüklemesini çağırır.Validate
- Güvenlik: Çerez adı kodlaması kaldırıldı
- Güvenlik: IdentityModel NuGet paketi sürümleri güncellendi
- SignalR: MessagePack Hub Protokolü, MessagePack 2.x paketine taşındı
- SignalR: MessagePack Hub Protokolü seçenekleri türü değiştirildi
- SignalR: UseSignalR ve UseConnections yöntemleri kaldırıldı
- Statik dosyalar: CSV içerik türü standartlara uygun olarak değiştirildi
Kod Analizi
- CA1416: Platform uyumluluğu
- CA1417: P / Invoke için dize parametresinde OutAttribute
- CA1831: Dizi için Aralık tabanlı dizin oluşturucular yerine AsSpan kullanın
- CA2013: Değer türleriyle ReferenceEquals kullanma
- CA2014: Döngülerde stackalloc kullanmayın
- CA2015: MemoryManager <T> ‘den türetilen türler için sonlandırıcıları tanımlamayın
- CA2200: Yığın ayrıntılarını korumak için yeniden atın
- CA2247: TaskCompletionSource yapıcısına yönelik bağımsız değişken, TaskCreationOptions değeri olmalıdır
Çekirdek .NET kitaplıkları
- Global birleştirme önbelleği API’leri artık kullanılmıyor
- Uzak API’ler artık kullanılmıyor
- Çoğu kod erişim güvenliği API’si eski
- Varsayılan olmayan tanılama kimliklerine sahip eski API’ler
- FrameworkDescription’ın değeri .NET Core yerine .NET’dir
- Tek dosya yayınlama biçimi için derlemeyle ilgili API davranışı değişiklikleri
- Activity.Tags’teki etiketlerin sırası tersine çevrildi
- Thread.Abort artık kullanılmıyor
- ConsoleLoggerOptions üzerinde eski özellikler
- Donanım iç IsSupported denetimleri iç içe türler için farklılık gösterebilir
- Referans derlemelerinde değiştirilen parametre adları
- ASCII olmayan karakterler içeren URI yolları Unix’te doğru şekilde ayrıştırılır
- Unix’te UNC yollarının Uri tarafından tanınması
- Environment.OSVersion doğru işletim sistemi sürümünü döndürüyor
- LINQ OrderBy.First {OrDefault} karmaşıklığı arttı
- IntPtr ve UIntPtr IFormattable uygular
- PrincipalPermissionAttribute, hata olarak kullanılmıyor
- BinaryFormatter serileştirme yöntemleri eski ve ASP.NET uygulamalarında yasak
- UTF-7 kod yolları eski
- Vector <T> desteklenmeyen türler için her zaman NotSupportedException oluşturur
- Varsayılan ActivityIdFormat W3C’dir
- Vector2.Lerp ve Vector4.Lerp için davranış değişikliği
- SSE ve SSE2 CompareGreaterThan yöntemleri NaN girişlerini doğru şekilde işler
- CounterSet.CreateCounterSetInstance, örnek zaten mevcutsa artık InvalidOperationException atıyor
- Microsoft.DotNet.PlatformAbstractions paketi kaldırıldı
Kriptografi
- TripleDES tarafından oluşturulan örnekler için Varsayılan Geri Bildirim Boyut değeri değiştirildi.
- Kriptografik soyutlamaların varsayılan uygulamalarının örneklenmesi desteklenmez
- Linux’ta .NET için varsayılan TLS şifre paketleri
- System.Security.Cryptography API’leri Blazor WebAssembly üzerinde desteklenmez
- System.Security.Cryptography.Oid işlevsel olarak yalnızca başlangıçtır
Küreselleşme
- Bazı Latin-1 karakterleri için Unicode kategorisi değiştirildi
- StringInfo ve TextElementEnumerator artık UAX29 uyumlu
- Globalization API’leri Windows’ta ICU kitaplıklarını kullanır
Birlikte çalışma
- RCW’yi bir
InterfaceIsIInspectable
arabirime çevirmek PlatformNotSupportedException oluşturur - Windows olmayan platformlarda A / W son eki yok
- WinRT için yerleşik destek .NET’ten kaldırıldı
MSBuild
- Netcoreapp’ten net’e TargetFramework değişikliği
- PublishDepsFilePath davranış değişikliği
- Directory.Packages.props dosyaları varsayılan olarak içe aktarılır
Ağ oluşturma
- NegotiateStream ve SslStream, ardışık Başlangıç işlemlerine izin verir
- Socket.LocalEndPoint, SendToAsync çağrıldıktan sonra güncellenir
- WinHttpHandler .NET çalışma zamanından kaldırıldı
- MulticastOption.Group boş bir değer kabul etmiyor
- Çerez Yolu işleme artık RFC 6265 ile uyumludur
Serileştirme
- ASP.NET Core uygulamaları, alıntılanan sayıların serisinin kaldırılmasına izin verir
- PropertyNamingPolicy, PropertyNameCaseInsensitive ve Encoder seçenekleri, anahtar / değer çiftleri serileştirilirken ve seri durumdan çıkarılırken kabul edilir
- Genel olmayan, parametresiz yapıcılar seriyi kaldırma için kullanılmaz
- JsonSerializer.Serialize, tür parametresi null olduğunda ArgumentNullException oluşturur
- JsonSerializer.Deserialize, tek karakter dizesi gerektirir
- BinaryFormatter.Deserialize, SerializationException’daki bazı özel durumları yeniden sarar
Windows Formları
- TextFormatFlags.ModifyString artık kullanılmıyor
- DataGridView artık özelleştirilmiş hücre stilleri için yazı tiplerini sıfırlamıyor
- OutputType, WPF ve WinForms uygulamaları için WinExe olarak ayarlandı
- DataGridView ile ilgili API’ler artık InvalidOperationException oluşturuyor
- WinForms ve WPF uygulamaları Microsoft.NET.Sdk kullanır
- Durum çubuğu kontrolleri kaldırıldı
- WinForms yöntemleri artık ArgumentException atıyor
- WinForms yöntemleri artık ArgumentNullException atıyor
- WinForms özellikleri artık ArgumentOutOfRangeException atıyor
Windows Sunum Çerçevesi (WPF)
- OutputType, WPF ve WinForms uygulamaları için WinExe olarak ayarlandı
- WinForms ve WPF uygulamaları Microsoft.NET.Sdk kullanır
Ayrıca
Daha fazla ayrıntı için resmi belgelere bakabilirsiniz.
Kaynak: MIGUEL BERNARD – .NET 5 – The breaking changes you need to know about