Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Upozornění
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální vydání najdete v článku o verzi .NET 9.
Tento článek popisuje nástroje sestavení pro samostatné Blazor WebAssembly aplikace a postup kompilace aplikace před nasazením s předem připravenou kompilací (AOT).
Nástroje pro sestavení .NET WebAssembly
Nástroje pro sestavení .NET WebAssembly jsou založené na Emscriptenu, sadě nástrojů kompilátoru pro webovou platformu.
Pokud chcete nainstalovat nástroje sestavení jako úlohu .NET, použijte některý z následujících přístupů:
Pro úlohu vývoje ASP.NET a webu v instalačním programu sady Visual Studio vyberte možnost nástroje sestavení .NET WebAssembly ze seznamu volitelných komponent. Tato možnost zajišťuje následující:
- Úloha se nainstaluje pro nejnovější sadu .NET SDK.
- Když se uvolní nová verze sady Visual Studio a obsahuje novou sadu .NET SDK, tato možnost nainstaluje úlohu pro novou sadu SDK.
Případně spuštěním následujícího příkazu v příkazovém prostředí pro správu nainstalujte nejnovější úlohu na nejnovější sadu .NET SDK dostupnou v systému:
dotnet workload install wasm-tools
Pokud chcete cílit na předchozí verzi .NET s danou sadou .NET SDK, nainstalujte pracovní zátěž wasm-tools-net{MAJOR VERSION}.
- Zástupný
{MAJOR VERSION}symbol se nahradí číslem hlavní verze vydané verze .NET, na kterou chcete cílit (napříkladwasm-tools-net8pro .NET 8). - Úlohy se instalují pro každou sadu .NET SDK. Instalace
wasm-toolsúlohy pro jednu sadu SDK nezpřístupní ji jiným sadám SDK na systému. - Musíte nainstalovat příslušnou úlohu pro každou verzi sady .NET SDK, kterou chcete použít.
Následující seznam ukazuje, které úlohy se mají nainstalovat pro každou sadu .NET SDK v závislosti na aplikacích, na které chcete cílit. I když více řádků může obsahovat stejný název úlohy, úlohy se vždy mírně liší pro každou konkrétní sadu .NET SDK.
- Použití sady .NET 10 SDK
- Cílení na .NET 10 vyžaduje
wasm-tools. - Cílení na .NET 9 vyžaduje
wasm-tools-net9. - Cílení na .NET 8 vyžaduje
wasm-tools-net8.
- Cílení na .NET 10 vyžaduje
- Použití sady .NET 9 SDK
- Cílení na .NET 9 vyžaduje
wasm-tools. - Cílení na .NET 8 vyžaduje
wasm-tools-net8.
- Cílení na .NET 9 vyžaduje
- Použití sady .NET 8 SDK: Cílení na .NET 8 vyžaduje
wasm-tools.
Kompilace předem (AOT)
Blazor WebAssembly podporuje kompilaci AOT (ahead-of-time), při které můžete kód .NET zkompilovat přímo do WebAssembly. Kompilace AOT vede ke zlepšení výkonu za běhu na úkor větší velikosti aplikace.
Bez povolení kompilace Blazor WebAssembly AOT se aplikace spouští v prohlížeči pomocí interpretu .NET Intermediate Language (IL) implementovaného v WebAssembly s částečnou podporou za běhu (JIT), která se neformálně označuje jako Jiterpreter. Vzhledem k tomu, že je interpretován kód .NET IL, aplikace obvykle běží pomaleji, než by běžely na modulu runtime .NET JIT na straně serveru bez jakékoli interpretace IL. Kompilace AOT řeší tento problém s výkonem kompilací kódu .NET aplikace přímo do WebAssembly pro nativní spuštění WebAssembly prohlížečem. Vylepšení výkonu AOT může přinést dramatická vylepšení pro aplikace, které provádějí úlohy náročné na procesor. Nevýhodou použití kompilace AOT je, že kompilované aplikace AOT jsou obecně větší než jejich protějšky interpretované v IL, takže při prvním požadavku obvykle trvá stažení do klienta déle.
Bez povolení kompilace Blazor WebAssembly AOT aplikace běží v prohlížeči pomocí interpretu .NET Intermediate Language (IL) implementovaného v WebAssembly. Vzhledem k tomu, že je kód .NET interpretován, aplikace obvykle běží pomaleji, než by běžely na straně serveru za běhu (JIT ). Kompilace AOT řeší tento problém s výkonem kompilací kódu .NET aplikace přímo do WebAssembly pro nativní spuštění WebAssembly prohlížečem. Vylepšení výkonu AOT může přinést dramatická vylepšení pro aplikace, které provádějí úlohy náročné na procesor. Nevýhodou použití kompilace AOT je, že kompilované aplikace AOT jsou obecně větší než jejich protějšky interpretované v IL, takže při prvním požadavku obvykle trvá stažení do klienta déle.
Pokyny k instalaci nástrojů sestavení .NET WebAssembly najdete viz ASP.NET Core Blazor WebAssembly nástroje sestavení a předčasnou (AOT) kompilaci.
Pokud chcete povolit kompilaci WebAssembly AOT, nastavte vlastnost <RunAOTCompilation> na true v souboru projektu aplikace Blazor WebAssembly.
<PropertyGroup>
<RunAOTCompilation>true</RunAOTCompilation>
</PropertyGroup>
Pokud chcete aplikaci zkompilovat do WebAssembly, publikujte ji. Publikování konfigurace Release zajišťuje, že se také spustí propojení jazyka .NET Intermediate Language (IL), aby se snížila velikost publikované aplikace.
dotnet publish -c Release
Kompilace WebAssembly AOT se provádí pouze při publikování projektu. Kompilace AOT se nepoužívá, když je projekt spuštěn během vývoje (Development prostředí), protože kompilace AOT obvykle trvá několik minut u malých projektů a potenciálně déle u větších projektů. Zkrácení doby sestavení pro kompilaci AOT je ve vývoji pro budoucí verze ASP.NET Core.
Velikost kompilované Blazor WebAssembly aplikace AOT je obecně větší než velikost aplikace, pokud je zkompilována do .NET IL:
I když rozdíl velikosti závisí na aplikaci, většina aplikací kompilovaných AOT je přibližně dvakrát větší než jejich verze kompilované v IL. To znamená, že použití kompilace AOT vyměňuje výkon při načítání za výkon při běhu. To, zda stojí za to použít kompilaci AOT, závisí na vaší aplikaci. Blazor WebAssembly aplikace, které jsou náročné na procesor, obecně využívají nejvíce kompilace AOT.
Větší velikost kompilované aplikace AOT je způsobená dvěma podmínkami:
- Další kód je nutný k reprezentaci instrukcí .NET IL vysoké úrovně v nativní WebAssembly.
- AOT při publikování aplikace neořízne spravované knihovny DLL. Blazor vyžaduje knihovny DLL pro metadata reflexe a podporu určitých funkcí modulu runtime .NET. Vyžadování knihoven DLL na klientovi zvětšuje velikost stahování, ale poskytuje kompatibilní prostředí .NET.
Poznámka:
Informace o vlastnostech a cílech nástroje Mono/WebAssembly MSBuild najdete v tématu WasmApp.Common.targets (dotnet/runtime úložiště GitHub). Oficiální dokumentace pro běžné vlastnosti MSBuild je plánována podle Document blazor msbuild konfigurační možnosti (dotnet/docs #27395).
Výkon
Pokyny k výkonu najdete v tématu výkon modulu runtime ASP.NET CoreBlazor WebAssembly:
- Velikost haldy pro některé prohlížeče mobilních zařízení
- Opětovné propojení modulu runtime
- Jedna instrukce, více dat (SIMD)
- Střih .NET IL po předběžné kompilaci (AOT) (.NET 8 nebo novější)
Ošetření výjimek
Zpracování výjimek je ve výchozím nastavení povolené. Pokud chcete zakázat zpracování výjimek, přidejte <WasmEnableExceptionHandling> vlastnost s hodnotou false v souboru projektu aplikace (.csproj):
<PropertyGroup>
<WasmEnableExceptionHandling>false</WasmEnableExceptionHandling>
</PropertyGroup>
Pokud chcete povolit zpracování výjimek WebAssembly, přidejte <WasmEnableExceptionHandling> vlastnost s hodnotou true v souboru projektu aplikace (.csproj):
<PropertyGroup>
<WasmEnableExceptionHandling>true</WasmEnableExceptionHandling>
</PropertyGroup>
Další informace naleznete v následujících zdrojích: