我尝试了使用Chrome的“清空缓存和硬重载”以及其他浏览器,但都没有效果。在Windows和Mac上使用Visual Studio for Mac和VS Code均出现此问题。
在默认的.Net Core项目中,它正常工作,因此一定是我项目中的某些更改导致的。我想知道应该从哪里开始调试此问题?我已经尝试将
Startup.cs
和Program.cs
中几乎所有内容注释掉,但仍然无法解决问题。Startup.cs
和Program.cs
中几乎所有内容注释掉,但仍然无法解决问题。RazorViewEngineOptions.AllowRecompilingViewsOnFileChange
不再可用。
在应用程序运行时刷新视图并不起作用,为了解决这个问题,可以按照以下步骤:
1. 将Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet包添加到项目中。
2. 在Startup.cs
中添加以下内容:services.AddControllersWithViews().AddRazorRuntimeCompilation();
这里是完整的解释,供好奇者参考。
services.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);
对于 ASP.NET Core 3.0 及以上版本,请参阅 Alexander Christov 的回答。
Microsoft.CodeAnalysis.CSharp.Symbol.Microsoft.CodeAnalysis.ISymbol.GetAttributes()```
您知道这个异常是什么意思吗?所有其他页面都可以正常加载。只有在编辑文件并刷新后才会出现此错误。
- kevskreeservices.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = _env.IsEnvironment("MyEnvironment"));
的代码。 - KuriosCurious我刚使用最新的ASP.NET MVC Core 3.1模板创建了一个新项目,并修改了以下内容以启用调试时的运行时重新编译:
引用NuGet包 - Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation。
Startup.cs - ConfigureServices(IServiceCollection services)原本是:
// stuff...
services.AddControllersWithViews();
// more stuff...
NOW:
// stuff...
var mvcBuilder = services.AddControllersWithViews();
#if DEBUG
mvcBuilder.AddRazorRuntimeCompilation();
#endif
// more stuff...
除了Alexander Christov的回答之外,自ASP.NET Core 3.1起,您可以在开发环境中启用视图编译,无需更改Startup
文件:
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
NuGet包。ASPNETCORE_ENVIRONMENT
为“Development”。ASPNETCORE_HOSTINGSTARTUPASSEMBLIES
为“Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation”。Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
从v5.x更新到v6.x,否则您将无法在制作更改时查看Razor视图或页面。 - Tommy WilliamsMicrosoft.AspNetCore.Mvc.Razor.RuntimeCompilation
,重音符号出现正确。看来这个视图编译问题似乎没有解决方案。 - jstuardo首先使用NuGet Manager安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 然后在startup.cs中添加以下代码
services.AddRazorPages().AddRazorRuntimeCompilation();
Net6.0同样有效。
builder.Services.AddRazorPages().AddRazorRuntimeCompilation();
针对使用Net Core 3.0或以上版本的用户
转到工具 → Nuget程序包管理器 → 管理解决方案的Nuget程序包
切换到浏览选项卡以从互联网浏览
搜索 RuntimeCompilation,点击 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
将其安装在您打算使用的项目上(当前稳定版本)
打开 Startup.cs 文件
进入 ConfigureServices 方法
添加以下行:services.AddControllersWithViews().AddRazorRuntimeCompilation();
完成
重新运行并查看。现在您可以刷新您的视图或页面。
services.AddControllersWithViews();
到 ConfigureService()
方法。
请注意,以下代码在 ASP.NET Core 3.1 中不可用:
services.AddControllersWithViews().AddRazorRuntimeCompilation();
.AddRazorRuntimeCompilation();
。builder.services.AddControllersWithViews();
因此它看起来像这样
构建器.services.AddControllersWithViews().AddRazorRuntimeCompilation();
然后它起作用了!
希望这可以帮助到您。
当视图位于单独的项目中时,以下内容可以帮助我。
if(HostingEnvironment.IsDevelopment()){ // only in development (optional)
services.AddMvc().AddRazorOptions(o => {
o.FileProviders.Add(new PhysicalFileProvider(PATH_TO_PROJECT));
});
}