.NET 6/ASP.NET Core中AddRazorRuntimeCompilation引发IWebHostEnvironment找不到错误
解决.NET 6/ASP.NET Core添加Razor运行时编译后IWebHostEnvironment找不到的问题
在.NET 6/ASP.NET Core项目中,安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet包,并在Program.cs中执行以下服务注册代码后:
builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation();
打开视图时会触发以下错误:
The type or namespace name 'IWebHostEnvironment' could not be found (are you missing a using directive or an assembly reference?)
错误指向_Layout.cshtml中的@inject IWebHostEnvironment HostingEnv语句。
解决方案
使用全限定类型名注入
将原注入语句替换为带命名空间的全限定写法:@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment HostingEnv此写法可直接解决类型找不到的问题。
处理Rider/ReSharper的冗余提示
上述全限定写法会被Rider或ReSharper标记为「冗余名称限定符」,可通过添加注释临时禁用该提示:@* ReSharper disable once RedundantNameQualifier *@ @inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment HostingEnv关于IsDevelopment()错误的补充
改用全限定引用后若出现IsDevelopment()相关错误,可参考对应问题评论中的解决方案进行处理。
内容的提问来源于stack exchange,提问作者Alexander Zeitler
相关产品推荐
相关产品推荐

