.NET Core 3.0:Razor视图修改后无法自动重新编译
解决ASP.NET Core 3.0 Preview 2 Razor Pages视图修改后不自动刷新的问题
我之前在使用ASP.NET Core 3.0 Preview版本时也碰到过完全一样的问题——默认模板里的Razor视图修改后没法自动重新编译,必须重启项目才能生效。其实这是因为3.0版本开始,Razor运行时编译不再默认包含在框架里了,得手动配置几步,给你详细说下:
1. 安装运行时编译的NuGet包
首先要安装对应版本的Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation包,因为你用的是3.0.0 Preview 2,所以包版本要选3.0.0-preview2.19153.1。
- 可以通过NuGet包管理器搜索安装,或者在Package Manager Console里执行命令:
Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -Version 3.0.0-preview2.19153.1
2. 在Startup.cs里启用运行时编译
打开Startup.cs,找到ConfigureServices方法,修改RazorPages的注册代码,添加运行时编译支持:
public void ConfigureServices(IServiceCollection services) { // 先获取RazorPages的构建器 var razorPagesBuilder = services.AddRazorPages(); // 只在开发环境启用,避免影响生产环境 #if DEBUG razorPagesBuilder.AddRazorRuntimeCompilation(); #endif }
3. 检查项目文件的配置(可选但保险)
打开你的项目文件(.csproj),确保在<PropertyGroup>节点里包含以下配置,保证编译上下文被保留:
<PropertyGroup> <!-- 其他配置... --> <PreserveCompilationContext>true</PreserveCompilationContext> <RazorCompileOnBuild>false</RazorCompileOnBuild> <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish> </PropertyGroup>
RazorCompileOnBuild设为false是避免构建时就编译视图,让运行时编译生效;MvcRazorCompileOnPublish设为true则保证发布时还是会预编译视图,不影响生产性能。
4. 确认开发环境设置
检查你的launchSettings.json文件,确保ASPNETCORE_ENVIRONMENT的值是Development——运行时编译只会在开发环境下启用,生产环境默认会禁用这个功能:
"profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, // 其他配置... }
做完这些步骤后,重启一次项目,之后再修改Razor视图,刷新页面就能看到变更生效了,不用再重启解决方案啦。
内容的提问来源于stack exchange,提问作者tarun713
相关产品推荐
相关产品推荐

