.NET Native ile Başlarken

Önemli

UWP uygulamanızı .NET ve Yerel AOT ile modernleştirin: Yeni bir UWP uygulaması geliştiriyorsanız veya mevcut bir UWP uygulamasını modernleştirmek istiyorsanız, .NET Native yerine Yerel AOT ile en güncel .NET için UWP desteğini kullanmanızı öneririz. Modern .NET için UWP desteği genel kullanıma sunulmuştur ve Visual Studio 2026 C# UWP uygulamaları için default proje türüdür. Bu, en son .NET ve C# özelliklerine, geliştirilmiş araç ve hata ayıklama desteğine ve daha hızlı derleme sürelerine erişim sağlar. .NET Native, güvenlik ve güvenilirlik düzeltmelerini almaya devam eder ancak yeni özellik güncelleştirmeleri almaz.

İster yeni bir UWP uygulaması yazıyor ister mevcut bir Windows 8.x uygulamasını (daha önce Microsoft Store uygulaması olarak da adlandırılıyor) geçiriyor olun, aynı yordam kümesini izleyebilirsiniz. Yerel .NET uygulaması oluşturmak için şu adımları izleyin:

  1. bir Evrensel Windows Platformu (UWP) uygulaması oluşturun ve düzgün çalıştığından emin olmak için uygulamanızın hata ayıklama derlemelerini test edin.

  2. ek yansıma ve serileştirme kullanımını işleyin.

  3. Uygulamanızın yayın derlemelerini dağıtın ve test edin.

  4. Eksik meta verileriel ile çözün ve tüm sorunlar çözülene kadar adım 3 yineleyin.

Uyarı

Mevcut bir Windows 8.x uygulamasını .NET Native'e geçiriyorsanız, Windows 8.x Uygulamanızı .NET Native'e Geçirme kılavuzunu gözden geçirdiğinizden emin olun.

1. Adım: UWP uygulamanızın hata ayıklama derlemelerini geliştirme ve test etme

İster yeni bir uygulama geliştirirken ister mevcut bir uygulamayı geçirirken, herhangi bir Windows uygulamasıyla aynı işlemi izlersiniz.

  1. Visual C# veya Visual Basic için Evrensel Windows uygulama şablonunu kullanarak Visual Studio'da yeni bir UWP projesi oluşturun. Varsayılan olarak, tüm UWP uygulamaları CoreCLR'yi hedefler ve yayın derlemeleri .NET Native araç zinciri kullanılarak derlenir.

  2. UWP uygulama projelerini yerel .NET araç zinciriyle derleme ile bunlar olmadan arasında bilinen bazı uyumluluk sorunları olduğunu unutmayın. Daha fazla bilgi için geçiş kılavuzu bakın.

Artık yerel sistemde (veya simülatörde) çalışan .NET Native yüzey alanına C# veya Visual Basic kodu yazabilirsiniz.

Önemli

Uygulamanızı geliştirirken, kodunuzda serileştirme veya yansıma kullanımını not edin.

Varsayılan olarak, hata ayıklama derlemeleri hızlı F5 dağıtımını etkinleştirmek için JIT ile derlenirken, yayın derlemeleri .NET Yerel derleme öncesi teknolojisi kullanılarak derlenir. Bu, uygulamanızın .NET Yerel araç zinciriyle derlemeden önce normal şekilde çalıştığından emin olmak için hata ayıklama derlemelerini oluşturmanız ve test edeceğiniz anlamına gelir.

2. Adım: Ek yansıma ve serileştirme kullanımını işleme

Default.rd.xmlbir çalışma zamanı yönergeleri dosyası, oluşturduğunuzda projenize otomatik olarak eklenir. C# dilinde geliştirirseniz, projenizin Özellikler klasöründe bulunur. Visual Basic'te geliştiriyorsanız, projenizin My Project klasöründe bulunur.

Uyarı

Çalışma zamanı yönergeleri dosyasının neden gerektiğini açıklayan .NET Native derleme işlemine genel bakış için bkz. .NET Native ve Derleme.

Çalışma zamanı yönergeleri dosyası, uygulamanızın çalışma zamanında ihtiyaç duyduğu meta verileri tanımlamak için kullanılır. Bazı durumlarda, dosyanın varsayılan sürümü yeterli olabilir. Ancak, serileştirme veya yansıma kullanan bazı kodlar çalışma zamanı yönergeleri dosyasında ek girişler gerektirebilir.

Serileştirme

İki seri hale getirici kategorisi vardır ve her ikisi de çalışma zamanı yönergeleri dosyasında ek girdiler gerektirebilir:

  • Yansıma tabanlı olmayan serileştiriciler. DataContractSerializer, DataContractJsonSerializer ve XmlSerializer sınıfları gibi .NET Framework sınıf kitaplığında bulunan serileştiriciler yansımaya dayanmaz. Ancak, seri hale getirilecek veya seri durumdan çıkarılacak nesneye göre kod oluşturulmasını gerektirir. Daha fazla bilgi için Serialization and Metadata içindeki "Microsoft Seri Hale Getiriciler" bölümüne bakın.

  • Üçüncü taraf serileştiriciler. En yaygın olanı Newtonsoft JSON seri hale getiricisi olan üçüncü taraf serileştirme kitaplıkları genellikle yansıma tabanlıdır ve nesne serileştirmeyi ve seri durumdan çıkarmayı desteklemek için *.rd.xml dosyasında girdiler gerektirir. Daha fazla bilgi için serileştirme ve meta veri"Üçüncü Taraf Seri Hale Getiriciler" bölümüne bakın.

yansıma kullanan Yöntemleri

Bazı durumlarda kodda yansıma kullanımı belirgin değildir. Bazı yaygın API'ler veya programlama desenleri yansıma API'sinin bir parçası olarak kabul edilmez, ancak başarılı bir şekilde yürütülmek için yansımayı kullanır. Bu, aşağıdaki tür örnekleme ve yöntem oluşturma yöntemlerini içerir:

Daha fazla bilgi için bkz. YansımaKullanan API'leri.

Uyarı

Çalışma zamanı yönergeleri dosyalarında kullanılan tür adlarının tam olarak nitelenmiş olması gerekir. Örneğin, dosya "String" yerine "System.String" belirtmelidir.

3. Adım: Uygulamanızın yayın derlemelerini dağıtma ve test etme

Çalışma zamanı yönergeleri dosyasını güncelleştirdikten sonra uygulamanızın yayın derlemelerini yeniden derleyebilir ve dağıtabilirsiniz. .NET Yerel ikili dosyalar, projenin Build çıkış yolu metin kutusunda belirtilen dizinin ILC.out alt dizinine, Properties iletişim kutusunda, Compile sekmesinde yerleştirilir. Bu klasörde olmayan ikili dosyalar .NET Native ile derlenmemiştir. Uygulamanızı kapsamlı bir şekilde test edin ve hata senaryoları dahil olmak üzere tüm senaryoları hedef platformlarının her birinde test edin.

Uygulamanız düzgün çalışmıyorsa (özellikle çalıştırma sırasında "MissingMetadataException " veya "MissingInteropDataException " istisnalarını oluşturuyorsa), bir sonraki bölümdeki yönergeleri izleyin: 4. Adım: Eksik Meta Verileri El ile Çözümleme. Birinci şans özel durumlarını etkinleştirmek bu hataları bulmanıza yardımcı olabilir.

Uygulamanızın hata ayıklama derlemelerini test edip hata ayıkladığınızda ve MissingMetadataException ve MissingInteropDataException özel durumlarını ortadan kaldırdığınızda uygulamanızı iyileştirilmiş .NET Yerel uygulama olarak test etmelisiniz. Bunu yapmak için, etkin proje yapılandırmanızı Hata Ayıklama yerine Sürümolarak değiştirin.

4. Adım: Eksik meta verileri el ile çözme

.NET Native ile masaüstünde karşılaşmadığınız en yaygın hata, bir çalışma zamanı MissingMetadataException, MissingInteropDataException veya MissingRuntimeArtifactException özel durumu olacaktır. Bazı durumlarda meta verilerin olmaması, öngörülemeyen davranışlarda ve hatta uygulama hatalarında kendini gösterebilir. Bu bölümde, çalışma zamanı yönergeleri dosyasına yönergeler ekleyerek bu özel durumların hatalarını nasıl ayıklayabileceğiniz ve çözebileceğiniz açıklanır. Çalışma zamanı yönergelerinin biçimi hakkında bilgi için bkz. Çalışma Zamanı Yönergeleri (rd.xml) Yapılandırma Dosyası Başvurusu. Çalışma zamanı yönergelerini ekledikten sonra, uygulamanızı tekrar dağıtıp test edin ve yeni bir MissingMetadataException, MissingInteropDataException veya MissingRuntimeArtifactException ile karşılaşmadığınızdan emin olana kadar bu özel durumları çözün.

Tavsiye

Uygulamanızın kod değişikliklerine dayanıklı olmasını sağlamak için çalışma zamanı yönergelerini üst düzeyde belirtin. Ad alanı ve tür düzeylerinde çalışma zamanı yönergeleri eklemenizi, üye düzeyi yerine öneririz. Dayanıklılık ile daha uzun derleme sürelerine sahip daha büyük ikili dosyalar arasında bir denge olabileceğini unutmayın.

Eksik meta veri özel durumunu giderirken şu sorunları göz önünde bulundurun:

  • Uygulama özel durumdan önce ne yapmaya çalışıyordu?

    • Örneğin, veri bağlama, verileri serileştirme veya seri durumdan çıkarma ya da doğrudan yansıma API'sini kullanma mıydı?
  • Bu yalıtılmış bir durum mu yoksa diğer türler için de aynı sorunla karşılaşabileceğinize inanıyor musunuz?

    • Örneğin, uygulamanın nesne modelinde bir tür seri hale getirildiğinde MissingMetadataException özel durumu oluşturulur. Seri hale getirilecek diğer türleri biliyorsanız, bu türler veya kodun ne kadar iyi düzenlendiğine bağlı olarak, onları içeren ad alanları için çalışma zamanı yönergelerini aynı anda ekleyebilirsiniz.
  • Yansıma kullanmaması için kodu yeniden yazabilir misiniz?

    • Örneğin, hangi tür bekleyebileceğinizi bildiğinizde kod dynamic anahtar sözcüğünü kullanıyor mu?

    • Kod, daha iyi bir alternatif kullanılabilir olduğunda yansımaya bağlı olan bir yöntemi çağırır mı?

Uyarı

Yansıma farklılıkları ve masaüstü uygulamalarında meta verilerin kullanılabilirliği ile .NET Native kaynaklı sorunları ele alma hakkında ek bilgi için Yansıma Kullanımına Dayanan API'lere bakın.

Uygulamanızı test ederken oluşan özel durumları ve diğer sorunları işlemeye ilişkin bazı özel örnekler için bkz:

Ayrıca bakınız