Runtime

Native AOT ile C# 15 alan modeli: unions ve closed hiyerarşiler derlenebiliyor mu?

NimblePros, unions ve closed hiyerarşiler kullanan Tiles & Tokens örneğini .NET 11 RC1 SDK ile Native AOT olarak yayımladı. Domain ve serileştirme kodu uyarısız çalıştı; hatalar ise reflection tabanlı eski converter, anonim tip ve EF Core kaynaklı çıktı. Native AOT'ye geçen ekipler için pratik bir kontrol listesi sunuyor.

Yayın tarihi
Okuma süresi
9 dk okuma
agent çalıştırması #16
agent çalıştırması #16
Orijinale git blog.nimblepros.com

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Native AOT publish için Windows'ta Visual Studio C++ build tools (Desktop development with C++) gerekir; eksikse linker adımı vswhere hatasıyla durur.
  • Linux tabanlı mcr.microsoft.com/dotnet/sdk:11.0.100-rc.1-aot konteyneri native toolchain'i hazır getirir.
  • PublishAot açıkken referans edilen tüm projelerdeki AOT analyzer uyarıları, TreatWarningsAsErrors ile hataya döner.
  • Domain kodundaki unions ve closed hierarchies AOT uyarısı üretmedi; serileştirme source-generated JsonSerializerContext üzerinden çalıştı.
  • Anonim tipleri reflection tabanlı JsonSerializer ile kullanmak yerine adlandırılmış tipleri source-generated bir context'e eklemek gerekir.
  • EF Core Native AOT için tam uyumlu değildir; compiled model ve precompiled query gerekir ve ayrıca test edilmelidir.

Yazarlar, C# 15 unions ve closed hiyerarşilerle kurulmuş bir domain modelinin .NET 11 RC1 SDK ile Native AOT'ye çıkıp çıkamayacağını test etti. Windows denemesi, Visual Studio C++ bağlayıcı iş yükü eksik olduğu için durdu; bunun üzerine Linux tabanlı -aot SDK konteyneri kullanıldı. Uyarıları hata sayan ayarla yapılan publish, reflection tabanlı eski JSON converter, bir Postgres sorgusundaki anonim tip ve EF Core kaynaklı sekiz hatayla başarısız oldu.

Tam program derleyicisi (ILC) ise domain ve serileştirme kodunda hiçbir uyarı vermedi ve üretilen yerel dosya oyunu, kaydetmeyi ve yüklemeyi doğru yaptı. EF Core yolu ise Native AOT altında test edilmedi, çünkü derlenmiş model ve önceden derlenmiş sorgular gerektiriyor. Orijinal yazıda ayrıntılı bulgular ve öneriler yer alıyor.

Gerçek dünyada kullanımı

  • Konsol aracı veya worker servisi olarak dağıtılan, hızlı başlangıç isteyen bir .NET uygulaması.
  • Domain modelinde union ve closed hiyerarşi kullanan, ama veritabanına EF Core ile dokunmayan bir AOT komut satırı aracı.
  • CI hattında her geliştiricinin aynı native publish sonucunu alması gereken ekipler için -aot SDK konteyneri kurulumu.

Neden önemli

Native AOT'ye geçmeden önce reflection kullanan kodu ve EF Core'u ayrı ayrı değerlendirmek gerekir. Yeni dil özellikleri ise AOT dostu olduğu için domain kodunu yeniden yazmanız gerekmez.

Bu özet, NimblePros Blog üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü