Öğretici: Yerel AOT kullanarak ASP.NET Core uygulaması yayımlama
ASP.NET Core 8.0, .NET yerel önceden (AOT) desteği 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 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 bkz . Yerel AOT dağıtımı önkoşulları.
C++ iş yükünün yüklü olduğu Masaüstü geliştirmesi ile Visual Studio 2022 Önizlemesi.
Not
Yerel AOT için link.exe ve Visual C++ statik çalışma zamanı kitaplıkları gerektiğinden Visual Studio 2022 Preview gereklidir. Visual Studio olmadan Yerel AOT'yi desteklemeye dair bir plan yoktur.
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
Komut dotnet publish
:
- Kaynak dosyaları 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 bağımsızdır 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 uman kitaplık yazarlarının şunlar için teşvik edilir:
- Yerel AOT uyumluluk gereksinimleri hakkı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ısı kaynak oluşturucuyu kullanma
- En düşük API AOT derleme şablonu
- Karşılaştırma:
WebApplication.CreateBuilder
CreateSlimBuilder
- Yeni en düşük API kaynak oluşturucusunu keşfetme
- Yöntem çağrılarını Kesicilerle değiştirme
- Yapılandırma bağlama kaynak oluşturucu
ASP.NET Core