De acuerdo con la documentación , las vistas de Razor deberían, de forma predeterminada, recompilarse al cambiar en entornos locales para ASP.NET Core 3.0.
Sin embargo, mi proyecto no hace esto localmente. Si cambio una vista y actualizo cuando estoy depurando localmente, el cambio no se refleja. Tengo que detener la solución, volver a ejecutarla y luego ver el cambio.
Estoy haciendo esto en una plantilla de aplicación web ASP.NET Core predeterminada en Visual Studio 2019 con ASP.NET Core 3.0.0 Preview 2 usando páginas de Razor. ¿Alguna idea de si necesito cambiar la configuración para habilitar esta función?
ACTUALIZACIÓN DE NOVIEMBRE DE 2019 PARA EL LANZAMIENTO COMPLETO 3.0:
Esta pregunta todavía recibe muchas visitas. Se han citado algunas respuestas para agregar
services.AddControllersWithViews().AddRazorRuntimeCompilation();
A su ConfigureServices()
función Startup.cs
después de agregar el Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
paquete NuGet. En mi caso, solo estoy usando Razor Pages, así que no llamo AddControllersWithViews()
. En cambio, esto funcionó para mí:
services.AddRazorPages().AddRazorRuntimeCompilation();
fuente
.AddRazorRuntimeCompilation();
Gracias!Respuestas:
De acuerdo, parece que aún no es compatible :(
Puede leer más sobre el problema aquí https://github.com/aspnet/Announcements/issues/343
Las aplicaciones que requieren compilación en tiempo de ejecución o recompilación de archivos Razor deben:
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
paquete. Estará disponible como parte de la versión 3.0.0-preview3 .ConfigureServices
para incluir una llamada aAddMvcRazorRuntimeCompilation
:fuente
AddMvcRazorRuntimeCompilation
esAddRazorRuntimeCompilation
con ASP.Net Core 3.0 Preview 4Para la versión de lanzamiento de ASP.NET Core 3:
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
También se puede habilitar de forma condicional solo para el desarrollo local, citado en el enlace:
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 }
fuente
Para obtener la compilación de vista en tiempo de ejecución en
ASP.NET Core
3Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
services.AddMvc().AddRazorRuntimeCompilation()
Microsoft.VisualStudio.Web.CodeGeneration.Design
si hay una discrepancia de versión en elMicrosoft.CodeAnalysis.Common
paquetefuente
La compilación en tiempo de ejecución se habilita mediante el
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
paquete. Para habilitar la compilación en tiempo de ejecución, las aplicaciones deben:Instale el
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
paquete NuGet.Actualice el
Startup.ConfigureServices
método del proyecto para incluir una llamada aAddRazorRuntimeCompilation
:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
fuente
Para volver a obtener la compilación de vistas de Razor en tiempo de ejecución en ASP.NET Core 3.1:
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
paquete NuGet.Startup.ConfigureServices
método del proyecto para incluir una llamada aAddRazorRuntimeCompilation
.services.AddRazorPages().AddRazorRuntimeCompilation()
;Compilación de archivos Razor en ASP.NET Core 3.1
fuente
Paso 1: instale el siguiente paquete desde NuGet Package Manager for Solution.
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Paso 2: agregue el siguiente código en el archivo ConfigureServices of Startup.cs
services.AddControllersWithViews (). AddRazorRuntimeCompilation ();
Guarde la página y luego actualice el navegador del cliente.
Si está utilizando Razor, agregue el código para services.AddRazorPages (). AddRazorRuntimeCompilation ();
fuente
Solo una nota adicional: es posible que desee habilitar solo condicionalmente esta compilación en tiempo de ejecución, de modo que la salida publicada:
Habilitar condicionalmente la compilación en tiempo de ejecución
fuente
En .NET Core 3.1, necesita deshabilitar la generación del
views.dll
archivo.Agregue el siguiente código a su
.csproj
archivo (en la raíz de su proyecto):<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 el siguiente paquete desde NuGet Package Manager para la solución.
Agregue el siguiente código al
ConfigureServices
método de suStartup.cs
archivo:O
O
Después de esto, vuelva a publicar y ejecútelo. Funcionará.
fuente
La forma más sencilla de configurar la compilación en tiempo de ejecución solo para el desarrollo local es actualizar los perfiles de inicio en
launchSettings.json
. Este método no requiere cambios de código para configurar un proyecto que se ejecuta localmente (no afectará su producción).Ver la documentación oficial :
Ejemplo:
{ "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" } } } }
fuente