De acordo com a documentação , as visualizações do Razor devem, por padrão, recompilar na mudança em ambientes locais para ASP.NET Core 3.0.
No entanto, meu projeto não faz isso localmente. Se eu alterar uma visualização e atualizar quando estiver depurando localmente, a alteração não será refletida. Tenho que interromper a solução, executar novamente e ver a mudança.
Estou fazendo isso em um modelo de aplicativo da Web ASP.NET Core padrão no Visual Studio 2019 com ASP.NET Core 3.0.0 Preview 2 usando páginas do Razor. Alguma ideia se eu preciso mudar as configurações para habilitar este recurso?
ATUALIZAÇÃO DE NOVEMBRO DE 2019 PARA O 3.0 FULL RELEASE:
Esta questão ainda recebe muitos pontos de vista. Algumas respostas citadas para adicionar
services.AddControllersWithViews().AddRazorRuntimeCompilation();
Para sua ConfigureServices()
função Startup.cs
após adicionar o Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pacote NuGet. No meu caso, estou usando apenas o Razor Pages, então não ligo AddControllersWithViews()
. Em vez disso, isso funcionou para mim:
services.AddRazorPages().AddRazorRuntimeCompilation();
fonte
.AddRazorRuntimeCompilation();
Obrigado!Respostas:
OK, parece que ainda não é compatível :(
Você pode ler mais sobre o problema aqui https://github.com/aspnet/Announcements/issues/343
Os aplicativos que requerem compilação em tempo de execução ou recompilação de arquivos Razor devem:
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pacote. Ele estará disponível como parte da versão 3.0.0-preview3 .ConfigureServices
para incluir uma chamada paraAddMvcRazorRuntimeCompilation
:fonte
AddMvcRazorRuntimeCompilation
éAddRazorRuntimeCompilation
com ASP.Net Core 3.0 Preview 4Para a versão de lançamento do ASP.NET Core 3:
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
Também pode ser habilitado condicionalmente apenas para desenvolvimento local, citado no link:
public Startup(IConfiguration configuration, IWebHostEnvironment env) { Configuration = configuration; Env = env; } public IWebHostEnvironment Env { get; set; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { IMvcBuilder builder = services.AddRazorPages(); #if DEBUG if (Env.IsDevelopment()) { builder.AddRazorRuntimeCompilation(); } #endif }
fonte
Para obter a compilação da visualização do tempo de execução em
ASP.NET Core
3Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
services.AddMvc().AddRazorRuntimeCompilation()
Microsoft.VisualStudio.Web.CodeGeneration.Design
se houver uma incompatibilidade de versão noMicrosoft.CodeAnalysis.Common
pacotefonte
A compilação em tempo de execução é ativada usando o
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pacote. Para habilitar a compilação em tempo de execução, os aplicativos devem:Instale o
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pacote NuGet.Atualize o
Startup.ConfigureServices
método do projeto para incluir uma chamada paraAddRazorRuntimeCompilation
:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
fonte
Para obter a compilação de visualizações do Razor no ASP.NET Core 3.1:
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pacote NuGet.Startup.ConfigureServices
método do projeto para incluir uma chamada paraAddRazorRuntimeCompilation
.services.AddRazorPages().AddRazorRuntimeCompilation()
;Compilação do arquivo Razor no ASP.NET Core 3.1
fonte
Etapa 1: instale o pacote abaixo do NuGet Package Manager for Solution.
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Etapa 2: adicione o código abaixo no arquivo ConfigureServices of Startup.cs
services.AddControllersWithViews (). AddRazorRuntimeCompilation ();
Salve a página e atualize o navegador do cliente.
Se você estiver usando o Razor, adicione o código para services.AddRazorPages (). AddRazorRuntimeCompilation ();
fonte
No .NET Core 3.1, você precisa desabilitar a geração do
views.dll
arquivo.Adicione o código abaixo ao seu
.csproj
arquivo (na raiz do seu projeto):<PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <UserSecretsId>...</UserSecretsId> <!-- add from this line: --> <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory> <CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory> <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish> <RazorCompileOnBuild>false</RazorCompileOnBuild> <!-- to this line. --> </PropertyGroup>
Instale o pacote abaixo do Gerenciador de Pacotes NuGet para a Solução.
Adicione o código abaixo ao
ConfigureServices
método do seuStartup.cs
arquivo:Ou
Ou
Depois disso, publique novamente e execute-o. Vai funcionar.
fonte
Apenas uma observação adicional - você pode querer ativar apenas condicionalmente esta compilação de tempo de execução, para que a saída publicada:
Habilitar condicionalmente a compilação em tempo de execução
fonte
A maneira mais simples de configurar a compilação de tempo de execução apenas para desenvolvimento local é atualizar os perfis de inicialização em
launchSettings.json
. Este método não requer alterações de código para configurar um projeto que está sendo executado localmente (não afetará sua produção).Veja a documentação oficial :
Exemplo:
{ "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" } } } }
fonte