ASP
.NET Core -
Compilação em runtime
dos arquivos Razor
![]() |
Neste artigo veremos o recurso para realizar a compilação em tempo de execução dos arquivos Razor na ASP.NET Core 5.0. |
Os arquivos Razor com uma extensão .cshtml são compilados no momento da construção e publicação usando o Razor SDK. A compilação em tempo de execução pode ser opcionalmente habilitada configurando seu projeto.
![]() |
A compilação em
tempo de construção e tempo de publicação de arquivos Razor é habilitada por
padrão pelo Razor SDK.
Quando habilitada, a compilação em tempo de execução complementa a compilação em
tempo de construção, permitindo que os arquivos do Razor sejam atualizados se
forem editados.
Podemos habilitar a compilação em runtime no momento de criar o projeto.
Os templates de projeto Razor Pages e MVC incluem uma opção para habilitar a compilação em tempo de execução quando o projeto é criado. Esta opção tem suporte no ASP.NET Core 3.1 e posterior.
1- No Visual Studio
Ao criar o projeto basta selecionar o template e marcar a opção : Enable Razor runtime compilation
2- No Visual Studio Code
Use a opção de template -rrc ou --razor-runtime-compilation.
Por exemplo, o comando a seguir cria um novo projeto Razor Pages com a compilação em tempo de execução habilitada:
|
Projetos já existentes
Para habilitar a compilação de tempo de execução para todos os ambientes em um projeto existente:
Exemplo:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages()
.AddRazorRuntimeCompilation();
// ...
}
|
Compilação condição
A compilação em tempo de execução pode ser habilitada de forma que esteja disponível apenas para desenvolvimento local. A ativação condicional desta maneira garante que a saída publicada:
Para habilitar a compilação de tempo de execução apenas no ambiente de desenvolvimento faça o seguinte:
No exemplo a seguir, a compilação em tempo de execução é ativada no ambiente de desenvolvimento para os perfis de inicialização IIS Express e RazorPagesApp:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57676",
"sslPort": 44364
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
},
"RazorPagesApp": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
}
}
}
|
Nenhuma mudança de código é necessária na classe de inicialização do projeto.
No runtime, o ASP.NET Core procura um atributo HostingStartup de nível de assembly em Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.
O atributo HostingStartup especifica o código de inicialização do aplicativo a ser executado. Esse código de inicialização permite a compilação em tempo de execução.
E estamos conversados...
"Porque a palavra de Deus é viva e
eficaz, e mais penetrante do que espada alguma de dois gumes, e penetra até à
divisão da alma e do espírito, e das juntas e medulas, e é apta para discernir
os pensamentos e intenções do coração."
Hebreus 4:12
Referências:
ASP .NET Core - Implementando a segurança com .
ASP.NET Core MVC - Criando um Dashboard ...
C# - Gerando QRCode - Macoratti
ASP .NET - Gerando QRCode com a API do Google
ASP .NET Core - Gerenciador de Despesas ...
ASP .NET Core - Acessando dados com Entity .
ASP.NET Core Web API - Tratamento de erros
ASP .NET Core 2 - MiniCurso Básico
ASP .NET Core - Implementando a segurança .
Curso ASP .NET Core - Macoratti.net
ASP .NET Core 3.1 - Conteinerizando uma ...