Öğretici: Yerel AOT kullanarak ASP.NET Core uygulaması yayımlama
ASP.NET Core 8.0, yerel .NET yerel (AOT)için destek sağlar.
Not
- Yerel AOT özelliği şu anda önizleme aşamasındadır.
- .NET 8'de tüm ASP.NET Core özellikleri Yerel AOT ile uyumlu değildir.
- .NET CLI yönergeleri için
ve Visual Studio yönergeleri için ,sekmeler sağlanır: - CLI sekmesi seçili olsa bile Visual Studio bir önkoşuldur.
- Cli, Visual Studio sekmesi seçili olsa bile yayımlamak için kullanılmalıdır.
Önkoşullar
Linux'ta Yerel AOT dağıtımı önkoşulları için bölümüne bakınız.
C++ ile Masaüstü geliştirme iş yükü yüklü olan .Visual Studio 2022 "C++ile masaüstü geliştirme" öğesinin seçili olduğunu gösteren Visual Studio iş yükü seçimi iletişim kutusunu
Not
Yerel AOT için link.exe ve Visual C++ statik çalışma zamanı kitaplıkları gerektiğinden Visual Studio 2022 gereklidir. Visual Studio olmadan Yerel AOT
Yerel AOT ile web uygulaması oluşturma
Yerel AOT ile çalışacak şekilde yapılandırılmış bir ASP.NET Core API uygulaması oluşturun:
Aşağıdaki komutları çalıştırın:
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Aşağıdaki örneğe benzer bir çıktı görüntülenir:
The template "ASP.NET Core Web API (Native AOT)" was created successfully.
Processing post-creation actions...
Restoring C:\Code\Demos\MyFirstAotWebApi\MyFirstAotWebApi.csproj:
Determining projects to restore...
Restored C:\Code\Demos\MyFirstAotWebApi\MyFirstAotWebApi.csproj (in 302 ms).
Restore succeeded.
Yerel AOT uygulamasını yayımlama
Uygulamanın Yerel AOT kullanılarak yayımlanabildiğini doğrulayın:
dotnet publish
dotnet publish
komutu:
- Kaynak dosyalarını derler.
- Derlenmiş kaynak kod dosyaları oluşturur.
- Oluşturulan derlemeleri yerel bir IL derleyicisine geçirir. IL derleyicisi yerel yürütülebilir dosyayı üretir. Yerel yürütülebilir dosya yerel makine kodunu içerir.
Aşağıdaki örneğe benzer bir çıktı görüntülenir:
MSBuild version 17.<version> for .NET
Determining projects to restore...
Restored C:\Code\Demos\MyFirstAotWebApi\MyFirstAotWebApi.csproj (in 241 ms).
C:\Code\dotnet\aspnetcore\.dotnet\sdk\8.0.<version>\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIde
ntifierInference.targets(287,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotne
t-support-policy [C:\Code\Demos\MyFirstAotWebApi\MyFirstAotWebApi.csproj]
MyFirstAotWebApi -> C:\Code\Demos\MyFirstAotWebApi\bin\Release\net8.0\win-x64\MyFirstAotWebApi.dll
Generating native code
MyFirstAotWebApi -> C:\Code\Demos\MyFirstAotWebApi\bin\Release\net8.0\win-x64\publish\
Çıkış, kullanılan .NET 8 sürümüne, kullanılan dizine ve diğer faktörlere bağlı olarak önceki örnekten farklı olabilir.
Çıkış dizininin içeriğini gözden geçirin:
dir bin\Release\net8.0\win-x64\publish
Aşağıdaki örneğe benzer bir çıktı görüntülenir:
Directory: C:\Code\Demos\MyFirstAotWebApi\bin\Release\net8.0\win-x64\publish
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 30/03/2023 1:41 PM 9480704 MyFirstAotWebApi.exe
-a--- 30/03/2023 1:41 PM 43044864 MyFirstAotWebApi.pdb
Yürütülebilir dosya kendi içeriğine sahiptir ve çalıştırmak için bir .NET çalışma zamanı gerektirmez. Başlatıldığında, uygulama geliştirme ortamında çalıştırıldığı gibi davranır. AOT uygulamasını çalıştırın:
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
Aşağıdaki örneğe benzer bir çıktı görüntülenir:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Code\Demos\MyFirstAotWebApi
Kitaplıklar ve Yerel AOT
ASP.NET Core projelerinde kullanılan popüler kitaplıkların çoğunda şu anda Yerel AOT'yi hedefleyen bir projede kullanıldığında bazı uyumluluk sorunları vardır, örneğin:
- Türleri incelemek ve bulmak için yansıma kullanımı.
- Çalışma zamanında kitaplıkları koşullu olarak yükleme.
- İşlevselliği uygulamak için anında kod oluşturma.
Yerel AOT ile çalışabilmek için bu dinamik özellikleri kullanan kitaplıkların güncelleştirilmesi gerekir. Roslyn kaynak oluşturucuları gibi araçlar kullanılarak güncelleştirilebilirler.
Yerel AOT'yi desteklemeyi amaçlayan kitaplık yazarları teşvik edilmektedir:
- Yerel AOT uyumluluk gereksinimlerihakkında bilgi edinin.
- Kitaplığıkırpma için hazırlayın.
Ayrıca bkz.
- Yerel AOT için
ASP.NET Core desteği - Yerel AOT dağıtım
- Yapılandırma bağlayıcı kaynak oluşturucuyu kullanma
- En az API AOT derleme şablonu
ile karşılaştırma - Yeni minimal API kaynak oluşturucusunu keşfetme
- Yöntem çağrılarını Interceptörler ile değiştirme
- Konfigürasyon Bağlama Kaynak Oluşturucu
ASP.NET Core