Kurz: Publikování aplikace ASP.NET Core pomocí nativní AOT
ASP.NET Core 8.0 zavádí podporu nativního rozhraní .NET předem (AOT).
Poznámka:
- Nativní funkce AOT je aktuálně ve verzi Preview.
- V .NET 8 nejsou všechny funkce ASP.NET Core kompatibilní s nativní AOT.
- Karty jsou k dispozici pro pokyny k .NET CLI a sadě Visual Studio :
- Visual Studio je předpokladem i v případě, že je vybraná karta rozhraní příkazového řádku.
- Rozhraní příkazového řádku se musí použít k publikování i v případě, že je vybraná karta sady Visual Studio.
Požadavky
V Linuxu si přečtěte požadavky pro nativní nasazení AOT.
Visual Studio 2022 Preview s nainstalovaným vývojem desktopových aplikací s nainstalovanou úlohou C++ .
Poznámka:
Visual Studio 2022 Preview se vyžaduje, protože nativní AOT vyžaduje link.exe a statické knihovny modulu runtime Visual C++. Bez sady Visual Studio se neplánuje podporovat nativní AOT.
Vytvoření webové aplikace pomocí nativní AOT
Vytvořte aplikaci ASP.NET Core API, která je nakonfigurovaná tak, aby fungovala s nativní AOT:
Spusťte následující příkazy:
dotnet new webapiaot -o MyFirstAotWebApi && cd MyFirstAotWebApi
Zobrazí se výstup podobný následujícímu příkladu:
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.
Publikování nativní aplikace AOT
Ověřte, že je možné aplikaci publikovat pomocí nativní AOT:
dotnet publish
Příkaz dotnet publish
:
- Zkompiluje zdrojové soubory.
- Generuje soubory zdrojového kódu, které jsou kompilovány.
- Předá vygenerovaná sestavení nativnímu kompilátoru IL. Kompilátor IL vytvoří nativní spustitelný soubor. Nativní spustitelný soubor obsahuje nativní kód počítače.
Zobrazí se výstup podobný následujícímu příkladu:
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\
Výstup se může lišit od předchozího příkladu v závislosti na použité verzi .NET 8, použitém adresáři a dalších faktorech.
Zkontrolujte obsah výstupního adresáře:
dir bin\Release\net8.0\win-x64\publish
Zobrazí se výstup podobný následujícímu příkladu:
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
Spustitelný soubor je samostatně obsažený a nevyžaduje spuštění modulu runtime .NET. Při spuštění se chová stejně jako aplikace spuštěná ve vývojovém prostředí. Spusťte aplikaci AOT:
.\bin\Release\net8.0\win-x64\publish\MyFirstAotWebApi.exe
Zobrazí se výstup podobný následujícímu příkladu:
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
Knihovny a nativní AOT
Mnoho oblíbených knihoven používaných v projektech ASP.NET Core má v současné době problémy s kompatibilitou při použití v projektu, který cílí na nativní AOT, například:
- Použití reflexe ke kontrole a zjišťování typů.
- Podmíněné načítání knihoven za běhu
- Generování kódu za běhu pro implementaci funkcí.
Knihovny používající tyto dynamické funkce je potřeba aktualizovat, aby fungovaly s nativní AOT. Dají se aktualizovat pomocí nástrojů, jako jsou generátory zdrojů Roslyn.
Autoři knihoven, kteří chtějí podporovat nativní AOT, se doporučuje:
- Přečtěte si o nativních požadavcích na kompatibilitu AOT.
- Připravte knihovnu na oříznutí.
Viz také
- podpora ASP.NET Core pro nativní AOT
- Nativní nasazení AOT
- Použití generátoru zdroje pořadače konfigurace
- Minimální šablona kompilace AOT rozhraní API
- Porovnání s
WebApplication.CreateBuilder
CreateSlimBuilder
- Prozkoumání nového minimálního generátoru zdrojů rozhraní API
- Nahrazení volání metod pomocí interceptorů
- Generátor zdrojů vazby konfigurace