Samouczek: publikowanie aplikacji ASP.NET Core przy użyciu natywnej usługi AOT
ASP.NET Core 8.0 wprowadza obsługę natywnej platformy .NET przed czasem (AOT).
Uwaga
- Natywna funkcja AOT jest obecnie dostępna w wersji zapoznawczej.
- Na platformie .NET 8 nie wszystkie funkcje platformy ASP.NET Core są zgodne z natywną funkcją AOT.
- Karty są dostępne dla instrukcji interfejsu wiersza polecenia platformy .NET i programu Visual Studio :
- Program Visual Studio jest wymaganiem wstępnym, nawet jeśli wybrano kartę interfejsu wiersza polecenia.
- Interfejs wiersza polecenia musi być używany do publikowania nawet w przypadku wybrania karty programu Visual Studio.
Wymagania wstępne
W systemie Linux zobacz Wymagania wstępne dotyczące natywnego wdrożenia usługi AOT.
Program Visual Studio 2022 (wersja zapoznawcza ) z zainstalowanym pakietem roboczym Programowanie aplikacji klasycznych z zainstalowanym obciążeniem języka C++ .
Uwaga
Wymagany jest program Visual Studio 2022 (wersja zapoznawcza), ponieważ natywna funkcja AOT wymaga link.exe i statycznych bibliotek środowiska uruchomieniowego visual C++. Nie ma planów obsługi natywnej AOT bez programu Visual Studio.
Tworzenie aplikacji internetowej przy użyciu natywnej usługi AOT
Utwórz aplikację interfejsu API platformy ASP.NET Core skonfigurowaną do pracy z natywną usługą AOT:
Uruchom następujące polecenia:
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Zostaną wyświetlone dane wyjściowe podobne do następującego przykładu:
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.
Publikowanie natywnej aplikacji AOT
Sprawdź, czy można opublikować aplikację przy użyciu natywnej usługi AOT:
dotnet publish
Polecenie dotnet publish
:
- Kompiluje pliki źródłowe.
- Generuje pliki kodu źródłowego, które są kompilowane.
- Przekazuje wygenerowane zestawy do natywnego kompilatora IL. Kompilator IL tworzy natywny plik wykonywalny. Natywny plik wykonywalny zawiera natywny kod maszyny.
Zostaną wyświetlone dane wyjściowe podobne do następującego przykładu:
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\
Dane wyjściowe mogą różnić się od powyższego przykładu w zależności od używanej wersji platformy .NET 8, używanej katalogu i innych czynników.
Przejrzyj zawartość katalogu wyjściowego:
dir bin\Release\net8.0\win-x64\publish
Zostaną wyświetlone dane wyjściowe podobne do następującego przykładu:
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
Plik wykonywalny jest samodzielny i nie wymaga uruchomienia środowiska uruchomieniowego platformy .NET. Po uruchomieniu działa tak samo jak aplikacja uruchamiana w środowisku deweloperów. Uruchom aplikację AOT:
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
Zostaną wyświetlone dane wyjściowe podobne do następującego przykładu:
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
Biblioteki i natywna usługa AOT
Wiele popularnych bibliotek używanych w projektach ASP.NET Core ma obecnie pewne problemy ze zgodnością w przypadku użycia w projekcie przeznaczonym dla natywnej funkcji AOT, takich jak:
- Używanie odbicia do sprawdzania i odnajdywania typów.
- Warunkowe ładowanie bibliotek w czasie wykonywania.
- Generowanie kodu na bieżąco w celu zaimplementowania funkcji.
Biblioteki korzystające z tych funkcji dynamicznych należy zaktualizować w celu pracy z natywną usługą AOT. Można je aktualizować przy użyciu narzędzi, takich jak generatory źródeł Roslyn.
Autorzy bibliotek, którzy mają nadzieję obsługiwać natywną usługę AOT, są zachęcani do:
- Przeczytaj o wymaganiach dotyczących zgodności z natywną usługą AOT.
- Przygotuj bibliotekę do przycinania.
Zobacz też
- obsługa platformy ASP.NET Core dla natywnej usługi AOT
- Wdrożenie natywnej usługi AOT
- Korzystanie z generatora źródła powiązania konfiguracji
- Minimalny szablon kompilacji AOT interfejsu API
- Porównanie
WebApplication.CreateBuilder
zCreateSlimBuilder
- Eksplorowanie nowego minimalnego generatora źródła interfejsu API
- Zastępowanie wywołań metod przechwytujących
- Generator źródła powiązania konfiguracji