Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.
Advertência
Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e .NET Core. Para a versão atual, consulte a versão .NET 10 deste artigo.
Este artigo descreve as ferramentas de compilação para aplicativos autônomos Blazor WebAssembly e como compilar um aplicativo antes da implantação com compilação antecipada (AOT).
Ferramentas de compilação do .NET WebAssembly
As ferramentas de compilação do .NET WebAssembly são baseadas no Emscripten, uma cadeia de ferramentas de compilador para a plataforma Web.
Para instalar as ferramentas de compilação como uma carga de trabalho .NET, use uma das seguintes abordagens:
Para a carga de trabalho de ASP.NET e desenvolvimento da Web no instalador do Visual Studio, selecione a opção Ferramentas de compilação do .NET WebAssembly na lista de componentes opcionais. A opção garante o seguinte:
- A carga de trabalho está instalada no SDK .NET mais recente.
- Quando uma nova versão do Visual Studio é lançada e contém um novo SDK do .NET, a opção instala a carga de trabalho para o novo SDK.
Como alternativa, execute o seguinte comando em um shell de comando administrativo para instalar a carga de trabalho mais recente no SDK .NET mais recente disponível no sistema:
dotnet workload install wasm-tools
Para direcionar um lançamento anterior do .NET com um determinado SDK do .NET, instale o workload wasm-tools-net{MAJOR VERSION}.
- O
{MAJOR VERSION}espaço reservado é substituído pelo número da versão principal da versão .NET que você deseja direcionar (por exemplo,wasm-tools-net8para .NET 8). - As cargas de trabalho são instaladas por SDK do .NET. A instalação da
wasm-toolscarga de trabalho para um SDK não a torna disponível para outros SDKs no sistema. - Você deve instalar a carga de trabalho apropriada para cada versão do SDK do .NET que pretende usar.
A lista a seguir mostra qual carga de trabalho instalar para cada SDK do .NET, dependendo dos aplicativos que você planeja segmentar. Embora várias linhas possam conter o mesmo nome de carga de trabalho, as cargas de trabalho sempre diferem ligeiramente para cada SDK .NET específico.
- Usando o SDK do .NET 10
- Para direcionar o .NET 10, é necessário
wasm-tools. - Targeting .NET 9 requer
wasm-tools-net9. - O direcionamento para o .NET 8 requer
wasm-tools-net8.
- Para direcionar o .NET 10, é necessário
- Usando o SDK do .NET 9
- Targeting .NET 9 requer
wasm-tools. - O direcionamento para o .NET 8 requer
wasm-tools-net8.
- Targeting .NET 9 requer
- Usando o SDK do .NET 8: destinar o .NET 8 requer
wasm-tools.
Compilação Antecipada (AOT)
Blazor WebAssembly suporta compilação ahead-of-time (AOT), onde você pode compilar seu código .NET diretamente no WebAssembly. A compilação AOT resulta em melhorias de desempenho em tempo de execução às custas de um tamanho de aplicativo maior.
Sem a necessidade de habilitação da compilação AOT, as aplicações são executadas no navegador utilizando um interpretador para a .NET Intermediate Language (IL), implementado em WebAssembly com suporte parcial para a execução just-in-time (JIT), informalmente conhecido como Jiterpreter. Como o código IL do .NET é interpretado, os aplicativos geralmente são executados mais lentamente do que em um tempo de execução JIT do .NET em servidor, sem qualquer interpretação de IL. A compilação AOT resolve esse problema de desempenho compilando o código .NET de um aplicativo diretamente no WebAssembly para execução nativa do WebAssembly pelo navegador. A melhoria de desempenho da AOT pode gerar melhorias significativas para aplicativos que executam tarefas com uso intensivo de CPU. A desvantagem de usar a compilação AOT é que os aplicativos compilados por AOT geralmente são maiores do que seus homólogos interpretados por IL, portanto, geralmente levam mais tempo para serem baixados para o cliente quando solicitados pela primeira vez.
Sem habilitar a compilação AOT, Blazor WebAssembly os aplicativos são executados no navegador usando um interpretador IL (Intermediate Language) do .NET implementado no WebAssembly. Como o código .NET é interpretado, os aplicativos geralmente são executados mais lentamente do que no tempo de execução just-in-time (JIT) de .NET do lado do servidor. A compilação AOT resolve esse problema de desempenho compilando o código .NET de um aplicativo diretamente no WebAssembly para execução nativa do WebAssembly pelo navegador. A melhoria de desempenho da AOT pode gerar melhorias significativas para aplicativos que executam tarefas com uso intensivo de CPU. A desvantagem de usar a compilação AOT é que os aplicativos compilados por AOT geralmente são maiores do que seus homólogos interpretados por IL, portanto, geralmente levam mais tempo para serem baixados para o cliente quando solicitados pela primeira vez.
Para obter orientação sobre como instalar as ferramentas de compilação do .NET WebAssembly, consulte ASP.NET Core Blazor WebAssembly build tools and ahead-of-time (AOT) compilation.
Para habilitar a compilação WebAssembly AOT, adicione a <RunAOTCompilation> propriedade definida para true ao Blazor WebAssembly arquivo de projeto do aplicativo:
<PropertyGroup>
<RunAOTCompilation>true</RunAOTCompilation>
</PropertyGroup>
Para compilar o aplicativo para WebAssembly, publique o aplicativo. A publicação da Release configuração garante que a vinculação IL (.NET Intermediate Language) também seja executada para reduzir o tamanho do aplicativo publicado:
dotnet publish -c Release
A compilação WebAssembly AOT só é executada quando o projeto é publicado. A compilação AOT não é usada quando o projeto é executado durante o desenvolvimento (Development ambiente) porque a compilação AOT geralmente leva vários minutos em projetos pequenos e potencialmente muito mais tempo para projetos maiores. A redução do tempo de compilação para a compilação AOT está em desenvolvimento para versões futuras do ASP.NET Core.
O tamanho de um aplicativo compilado Blazor WebAssembly pela AOT geralmente é maior do que o tamanho do aplicativo se compilado no .NET IL:
Embora a diferença de tamanho dependa do aplicativo, a maioria dos aplicativos compilados pela AOT tem cerca de duas vezes o tamanho de suas versões compiladas por IL. Isso significa que o uso da compilação AOT compensa o desempenho em tempo de carregamento pelo desempenho em tempo de execução. Se essa compensação vale a pena usar a compilação AOT depende do seu aplicativo. Blazor WebAssembly os aplicativos que consomem muita CPU geralmente se beneficiam mais da compilação AOT.
O tamanho maior de um aplicativo compilado pela AOT se deve a duas condições:
- É necessário mais código para representar instruções de IL .NET de alto nível no WebAssembly nativo.
- A AOT não corta DLLs gerenciadas quando o aplicativo é publicado. Blazor requer as DLLs para metadados de reflexão e para apoiar certas funcionalidades do runtime .NET. Exigir as DLLs no cliente aumenta o tamanho do download, mas fornece uma experiência .NET mais compatível.
Observação
Para propriedades e metas de Mono/WebAssembly MSBuild, consulte WasmApp.Common.targets (repositório GitHubdotnet/runtime). A documentação oficial para propriedades comuns do MSBuild é planejada de acordo com Document blazor msbuild configuration options (dotnet/docs #27395).
Desempenho
Para obter orientações sobre desempenho, consulte o desempenho do tempo de execução do ASP.NET CoreBlazor WebAssembly.
- Tamanho do heap para alguns navegadores de dispositivos móveis
- Revinculação de tempo de execução
- Instrução única, vários dados (SIMD)
- Cortar IL do .NET após compilação antecipada (AOT) (.NET 8 ou posterior)
Processamento de exceções
O tratamento de exceções está habilitado por padrão. Para desativar o tratamento de exceções, adicione a propriedade <WasmEnableExceptionHandling> com um valor de false no ficheiro de projeto do aplicativo (.csproj):
<PropertyGroup>
<WasmEnableExceptionHandling>false</WasmEnableExceptionHandling>
</PropertyGroup>
Para habilitar o tratamento de exceções WebAssembly, adicione a propriedade <WasmEnableExceptionHandling> com um valor de true no arquivo de projeto do aplicativo .csproj.
<PropertyGroup>
<WasmEnableExceptionHandling>true</WasmEnableExceptionHandling>
</PropertyGroup>
Para obter mais informações, consulte os seguintes recursos:
- Configurando e hospedando aplicativos .NET WebAssembly: EH - Tratamento de exceções
- Tratamento de exceções