Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulamanızı yerel AOT yayımlamak, kendi kendine ve yerel koda derlenmiş önceden (AOT) olan bir uygulama oluşturur. Yerel AOT uygulamaları daha hızlı başlangıç süresine ve daha küçük bellek ayak izine sahiptir. Bu uygulamalar ,NET çalışma zamanı yüklü olmayan makinelerde çalıştırılabilir.
Yerel AOT'nin avantajı, bulut altyapısı ve hiper ölçekli hizmetler gibi çok sayıda dağıtılmış örneği olan iş yükleri için en önemli özelliktir. .NET 8, yerel AOT içinASP.NET Core desteği ekler.
Yerel AOT dağıtım modeli, yayımlama sırasında IL'yi yerel koda derlemek için önceden oluşturulmuş bir derleyici kullanır. Yerel AOT uygulamaları, uygulama çalışırken tam zamanında (JIT) derleyici kullanmaz. Yerel AOT uygulamaları, JIT'ye izin verilmeyen kısıtlı ortamlarda çalıştırılabilir. Yerel AOT uygulamaları linux x64 veya Windows x64 gibi belirli bir çalışma zamanı ortamını hedefler; aynı bağımsız uygulamayayımlamak gibi.
Önkoşullar
Tüm varsayılan bileşenlere sahip C++ iş yüküyle Masaüstü geliştirme dahil olmak üzere Visual Studio 2022 veya üzeri.
CLI kullanarak Yerel AOT yayımlama
Proje dosyanıza ekleyin
<PublishAot>true</PublishAot>.Bu özellik yayımlama sırasında Yerel AOT derlemesini etkinleştirir. Ayrıca derleme ve düzenleme sırasında dinamik kod kullanımı analizini de etkinleştirir. Yayımlama dışındaki davranışları denetlediğinden, bu ayarı komut satırına geçirmek yerine proje dosyasına yerleştirmek tercih edilir.
<PropertyGroup> <PublishAot>true</PublishAot> </PropertyGroup>dotnet publish -r <RID>kullanarak uygulamayı belirli bir çalışma zamanı tanımlayıcısı için yayımlayın.Aşağıdaki örnek, gerekli önkoşulların yüklü olduğu bir makinede Yerel AOT uygulaması olarak Windows uygulamasını yayımlar.
dotnet publish -r win-x64 -c ReleaseAşağıdaki örnek, Linux için uygulamayı Yerel AOT uygulaması olarak yayımlar. Linux makinesinde üretilen Yerel AOT ikili dosyası yalnızca aynı veya daha yeni Bir Linux sürümü üzerinde çalışacaktır. Örneğin, Ubuntu 20.04 üzerinde üretilen Native AOT ikili dosyası Ubuntu 20.04 ve sonraki sürümlerde çalıştırılır ancak Ubuntu 18.04 üzerinde çalışmaz.
dotnet publish -r linux-arm64 -c Release
Uygulama yayımlama dizininde kullanılabilir ve coreclr çalışma zamanının kaldırılmış sürümü de dahil olmak üzere içinde çalıştırmak için gereken tüm kodları içerir.
GitHub'daki dotnet/samples deposunda bulunan Yerel AOT örnekleri göz atın. Örnekler, önkoşulların yüklenmesini otomatikleştirmeyi ve kapsayıcıları kullanarak Yerel AOT ile .NET projelerini yayımlamayı gösteren Linux ve Windows Dockerfile'ları içerir.
AOT uyumluluk çözümleyicileri
IsAotCompatible özelliği, kitaplığın Yerel AOT ile uyumlu olup olmadığını belirtmek için kullanılır. Bir kitaplığın IsAotCompatible özelliğini trueolarak ayarlamasını göz önünde bulundurun, örneğin:
<PropertyGroup>
<IsAotCompatible>true</IsAotCompatible>
</PropertyGroup>
Önceki yapılandırma, şu özelliklere varsayılan değer olarak true atar:
IsTrimmableEnableTrimAnalyzerEnableSingleFileAnalyzerEnableAotAnalyzer
Bu çözümleyiciler, kitaplığın Yerel AOT ile uyumlu olduğundan emin olmak için yardımcı olur.
Referans edilen derlemelerin AOT uyumlu olduğunu doğrulayın
Bir kitaplık için AOT analizini etkinleştirdiğinizde, isteğe bağlı olarak özelliğini VerifyReferenceAotCompatibilityolarak ayarlayarak başvurulan tüm derlemelere AOT uyumluluğu için ek açıklama eklendiğini doğrulamayı true etkinleştirebilirsiniz:
<PropertyGroup>
<IsAotCompatible>true</IsAotCompatible>
<VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility>
</PropertyGroup>
Bu özellik etkinleştirildiğinde, çözümleyici meta verileri olmayan IsAotCompatible başvurulan derlemeler hakkında uyarır. Bu, projenizdeki tüm bağımlılıkların Yerel AOT uyumluluğu için ek açıklama ile belirtilmesini sağlamaya yardımcı olur. Görüntülenen uyarı IL3058'dir.
Bu doğrulama şu nedenlerden dolayı katılımcı tercihine bağlıdır:
- Tüm AOT uyumlu kitaplıklar meta verileri içerecek
IsAotCompatibleşekilde güncelleştirilmedi. - Yerel AOT ile düzgün çalışan ancak açıkça bu şekilde işaretlenmemiş birçok bağımlılığınız varsa, uyarı gürültülü olabilir.
Uyarı
Derleme IsAotCompatible meta verileri .NET 10'da kullanıma sunulmuştur. .NET'in önceki sürümlerini hedef alarak yayımlanan kitaplıklar, hatta <IsAotCompatible>true</IsAotCompatible> ile oluşturulmuş olsalar bile, bu özniteliğe sahip olmayacaktır.
Tüm bağımlılıklarınızın yazarları tarafından açıkça AOT uyumlu olarak işaretlendiğinden emin olmak istediğinizde bu doğrulamayı etkinleştirmeyi göz önünde bulundurun.
Yerel hata ayıklama bilgileri
Varsayılan olarak, Yerel AOT derlemesi, hata ayıklama bilgisini ayrı bir dosyada üretir.
- Linux: .dbg
- Windows: .pdb
- macOS: .dSYM klasörü
Hata ayıklama dosyası, uygulamayı hata ayıklayıcısı altında çalıştırmak veyakilitlenme dökümlerini incelemek için gereklidir. Unix benzeri platformlarda, hata ayıklama bilgilerini yerel ikili dosyaya eklemek için StripSymbols özelliğini false olarak ayarlayın. Hata ayıklama bilgilerini içermek, yerel yürütülebilir dosyayı büyütür.
<PropertyGroup>
<StripSymbols>false</StripSymbols>
</PropertyGroup>
Yerel AOT dağıtımının sınırlamaları
Yerel AOT uygulamaları aşağıdaki sınırlamalara sahiptir:
- Dinamik yükleme yok, örneğin
Assembly.LoadFile. - Örneğin,
System.Reflection.Emitçalışma zamanı kodu oluşturma işlemi yoktur. - C++/CLI yok.
- Windows: Yerleşik COM yok.
- Kırpma gerektirir, bu da sınırlamaları içerir.
- bilinenuyumsuzlukları olan tek bir dosyaya derlemeyi ifade eder.
- Uygulamalar gerekli çalışma zamanı kitaplıklarını içerir (bağımsız uygulamalar gibi, çerçeveye bağımlı uygulamalara kıyasla boyutlarını artırır).
- System.Linq.Expressions her zaman, çalışma zamanı tarafından oluşturulan derlenmiş koddan daha yavaş olan yorumlanmış formlarını kullanın.
- Yapı türündeki argümanlarla kullanılan genel parametreler için her örneklemede özel kod üretilir. Dinamik çalışma zamanında isteğe bağlı olarak birçok örnek oluşturulur. Yerel AOT'de tüm örnekler önceden oluşturulur. Bu, uygulamanın disk boyutunu önemli ölçüde etkileyebilir. Genel sanal yöntemler ve genel örnek yöntemleri de her uygulayan veya geçersiz kılma türü için bir örneklemeye sahip olur.
- Henüz tüm çalışma zamanı kitaplıklarına Yerel AOT uyumlu olmaları için tam açıklama eklenmemiştir. Yani, çalışma zamanı kitaplıklarındaki bazı uyarılar son geliştiriciler tarafından eyleme dönüştürülemez.
- Bazı sınırlamalarla hata ayıklama ve profil oluşturma için tanılama desteği.
- Bazı ASP.NET Core özellikleri için destek. Daha fazla bilgi için bkz. Yerel AOT içinASP.NET Core desteği.
Yayımlama işlemi, olası sınırlamalar için projenin tamamını ve bağımlılıklarını analiz eder. Yayımlanan uygulamanın çalışma zamanında karşılaşabileceği her sınırlama için uyarılar verilir.
Platform/mimari kısıtlamaları
Aşağıdaki tabloda desteklenen derleme hedefleri gösterilmektedir.
| Platforma | Desteklenen mimari | Notlar |
|---|---|---|
| Windows | x64, Arm64 | |
| Linux işletim sistemi | x64, Arm64 | |
| macOS | x64, Arm64 | |
| Ios | Arm64 | Deneysel destek |
| iOSSimulator | x64, Arm64 | Deneysel destek |
| tvOS | Arm64 | Deneysel destek |
| tvOSSimulator | x64, Arm64 | Deneysel destek |
| MacCatalyst | x64, Arm64 | Deneysel destek |
| Android | x64, Arm64 | Deneysel, yerleşik Java entegrasyonu yok |
Yerel AOT ile belirli bir platformun nasıl desteklendiği hakkında daha fazla bilgi için tablodaki bağlantıyı izleyin.