Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Notitie
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Belangrijk
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikelvoor de huidige release.
In dit artikel worden de buildhulpprogramma's voor zelfstandige Blazor WebAssembly-apps beschreven en wordt beschreven hoe u een app compileert vóór de implementatie met AOT-compilatie (Ahead-Of-Time).
.NET WebAssembly-bouwtools
De .NET WebAssembly-buildhulpprogramma's zijn gebaseerd op Emscripten, een compilerhulpprogrammaketen voor het webplatform.
Als u de buildhulpprogramma's wilt installeren als een .NET-workload, gebruikt u een van de volgende methoden:
Selecteer voor de ASP.NET- en web-ontwikkeling workload in het installatieprogramma van Visual Studio de optie .NET WebAssembly-buildhulpprogramma's uit de lijst met optionele onderdelen. De optie zorgt voor het volgende:
- De workload is geïnstalleerd voor de nieuwste .NET SDK.
 - Wanneer er een nieuwe versie van Visual Studio wordt uitgebracht en deze een nieuwe .NET SDK bevat, installeert de optie de workload voor de nieuwe SDK.
 
U kunt ook de volgende opdracht uitvoeren in een shell met beheeropdrachten om de meest recente workload te installeren op de nieuwste .NET SDK die beschikbaar is op het systeem:
dotnet workload install wasm-tools
Installeer de wasm-tools-net{MAJOR VERSION} workload om een eerdere .NET-release met een bepaalde .NET SDK te targeten:
- De 
{MAJOR VERSION}tijdelijke aanduiding wordt vervangen door het primaire versienummer van de .NET-release waarop u zich wilt richten (bijvoorbeeldwasm-tools-net8voor .NET 8). - Workloads worden geïnstalleerd per .NET SDK. Als u de 
wasm-toolsworkload voor één SDK installeert, wordt deze niet beschikbaar voor andere SDK's op het systeem. - U moet de juiste workload installeren voor elke .NET SDK-versie die u wilt gebruiken.
 
In de volgende lijst ziet u welke workload moet worden geïnstalleerd voor elke .NET SDK, afhankelijk van de apps waarop u zich wilt richten. Hoewel meerdere rijen dezelfde workloadnaam kunnen bevatten, verschillen de workloads altijd iets voor elke specifieke .NET SDK.
- De .NET 9 SDK gebruiken 
- Het targeten van .NET 9 vereist 
wasm-tools. - Het richten op .NET 8 vereist 
wasm-tools-net8. 
 - Het targeten van .NET 9 vereist 
 - Bij gebruik van de .NET 8 SDK: Het targeten van .NET 8 vereist 
wasm-tools. 
AOT-compilatie (vooruitcompilatie)
Blazor WebAssembly biedt ondersteuning voor AOT-compilatie (ahead-of-time), waar u uw .NET-code rechtstreeks in WebAssembly kunt compileren. AOT-compilatie resulteert in runtime-prestatieverbeteringen ten koste van een grotere app-grootte.
Zonder AOT-compilatie in te schakelen, worden Blazor WebAssembly apps uitgevoerd in de browser met behulp van een .NET Intermediate Language (IL) interpreter geïmplementeerd in WebAssembly met gedeeltelijk Just-In-Time -ondersteuning (JIT) runtime-ondersteuning, informeel aangeduid als de Jiterpreter. Omdat de .NET IL-code wordt geïnterpreteerd, worden apps doorgaans langzamer uitgevoerd dan op een .NET JIT-runtime aan de serverzijde zonder il-interpretatie. Met AOT-compilatie wordt dit prestatieprobleem opgelost door de .NET-code van een app rechtstreeks in WebAssembly te compileren voor systeemeigen WebAssembly-uitvoering door de browser. De verbetering van de AOT-prestaties kan aanzienlijke verbeteringen opleveren voor apps die CPU-intensieve taken uitvoeren. Het nadeel van het gebruik van AOT-compilatie is dat AOT-gecompileerde apps over het algemeen groter zijn dan hun IL-geïnterpreteerde tegenhangers, zodat ze meestal langer duren om naar de client te downloaden wanneer ze voor het eerst worden aangevraagd.
Zonder AOT-compilatie in te schakelen, worden Blazor WebAssembly apps uitgevoerd in de browser met behulp van een .NET Intermediate Language (IL) interpreter geïmplementeerd in WebAssembly. Omdat de .NET-code wordt geïnterpreteerd, worden apps doorgaans langzamer uitgevoerd dan ze zouden draaien op een server-side .NET-just-in-time (JIT) runtime. Met AOT-compilatie wordt dit prestatieprobleem opgelost door de .NET-code van een app rechtstreeks in WebAssembly te compileren voor systeemeigen WebAssembly-uitvoering door de browser. De verbetering van de AOT-prestaties kan aanzienlijke verbeteringen opleveren voor apps die CPU-intensieve taken uitvoeren. Het nadeel van het gebruik van AOT-compilatie is dat AOT-gecompileerde apps over het algemeen groter zijn dan hun IL-geïnterpreteerde tegenhangers, zodat ze meestal langer duren om naar de client te downloaden wanneer ze voor het eerst worden aangevraagd.
Zie ASP.NET Core Blazor WebAssembly buildhulpprogramma's en AOT-compilatievoor richtlijnen over het installeren van de .NET WebAssembly-buildhulpprogramma's.
Als u WebAssembly AOT-compilatie wilt inschakelen, voegt u de eigenschap <RunAOTCompilation> die is ingesteld op true toe aan het projectbestand van de Blazor WebAssembly-app:
<PropertyGroup>
  <RunAOTCompilation>true</RunAOTCompilation>
</PropertyGroup>
Als u de app wilt compileren naar WebAssembly, publiceert u de app. Het publiceren van de Release-configuratie zorgt ervoor dat de .NET Intermediate Language (IL) koppeling ook wordt uitgevoerd om de grootte van de gepubliceerde app te verminderen:
dotnet publish -c Release
WebAssembly AOT-compilatie wordt alleen uitgevoerd wanneer het project wordt gepubliceerd. AOT-compilatie wordt niet gebruikt wanneer het project wordt uitgevoerd tijdens de ontwikkeling (Development omgeving), omdat AOT-compilatie meestal enkele minuten duurt voor kleine projecten en mogelijk veel langer voor grotere projecten. Het verminderen van de buildtijd voor AOT-compilatie is in ontwikkeling voor toekomstige releases van ASP.NET Core.
De grootte van een AOT-gecompileerde Blazor WebAssembly-app is over het algemeen groter dan de grootte van de app als deze is gecompileerd in .NET IL:
Hoewel het grootteverschil afhankelijk is van de app, zijn de meeste door AOT gecompileerde apps ongeveer twee keer zo groot als hun IL-gecompileerde versies. Dit betekent dat het gebruik van AOT-compilatie de laadtijdprestatie inruilt voor runtimeprestaties. Of dit compromis het waard is om AOT-compilatie te gebruiken, is afhankelijk van uw app. Blazor WebAssembly apps die CPU-intensief zijn, profiteren over het algemeen het meeste van AOT-compilatie.
De grotere grootte van een AOT-gecompileerde app is te wijten aan twee voorwaarden:
- Er is meer code vereist om .NET IL-instructies op hoog niveau weer te geven in systeemeigen WebAssembly.
 - AOT knipt beheerde DLL's niet uit wanneer de app wordt gepubliceerd. Blazor vereist de DLL's voor weerspiegelingsmetagegevens en om bepaalde .NET-runtimefuncties te ondersteunen. Het vereisen van de DLL's op de client verhoogt de downloadgrootte, maar biedt een meer compatibele .NET-ervaring.
 
Notitie
Zie ) voor WasmApp.Common.targets/WebAssembly MSBuild-eigenschappen en -doelen. Officiële documentatie voor algemene MSBuild-eigenschappen is gepland per Document Blazor MSBuild-configuratieopties (dotnet/docs #27395).
Prestatie
Zie ASP.NET Core Blazor WebAssembly runtime-prestaties voor richtlijnen voor prestaties:
- Heapgrootte voor sommige mobiele apparaatbrowsers
 - Runtime opnieuw koppelen
 - Eén instructie, meerdere gegevens (SIMD)
 - .NET IL verwijderen na AOT-compilatie (.NET 8 of hoger)
 
Afhandeling van uitzonderingen
Uitzonderingsafhandeling is standaard ingeschakeld. Als u uitzonderingsafhandeling wilt uitschakelen, voegt u de eigenschap <WasmEnableExceptionHandling> toe met een waarde van false in het projectbestand van de app (.csproj):
<PropertyGroup>
  <WasmEnableExceptionHandling>false</WasmEnableExceptionHandling>
</PropertyGroup>
Als u de verwerking van WebAssembly-uitzonderingen wilt inschakelen, voegt u de eigenschap <WasmEnableExceptionHandling> toe met een waarde van true in het projectbestand van de app (.csproj):
<PropertyGroup>
  <WasmEnableExceptionHandling>true</WasmEnableExceptionHandling>
</PropertyGroup>
Zie de volgende bronnen voor meer informatie:
- .NET WebAssembly-toepassingen configureren en hosten: EH - Uitzonderingsafhandeling
 - afhandeling van uitzonderingen