Öğ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

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:

Ayrıca bkz.