升级.NET 7.0后已删除的About.cshtml仍引发编译错误求助
问题原因及解决方案
可能的触发原因
- Razor编译缓存残留:.NET 7会将.cshtml文件编译为对应的C#类,即使删除源文件,
obj、bin目录(尤其是obj\Debug\net7.0\Razor路径)或系统临时缓存中的旧编译文件仍可能保留对该类的引用,导致编译报错。 - 项目隐式引用残留:项目文件可能通过通配符(如
<Content Include="**/*.cshtml" />)包含视图文件,移动/删除操作后,obj目录下自动生成的project.assets.json可能仍保留旧文件的引用记录。 - 间接代码引用:项目中其他文件(控制器、布局页、视图组件)可能存在对About页面的引用,比如
return View("About")、@page "/About"或直接引用编译后的AboutModel类型,这类引用不会关联到源.cshtml文件,所以搜索源文件无法发现。 - 解决方案缓存残留:解决方案根目录的
.vs隐藏文件夹保存着配置缓存,其中可能留存旧文件的引用信息,影响编译过程。
解决步骤
- 直接删除项目目录下的
obj和bin文件夹,再重新生成项目。 - 删除解决方案根目录的
.vs隐藏文件夹(需显示隐藏文件)。 - 打开项目文件(
.csproj),检查是否存在关于About.cshtml的残留引用,包括通配符包含规则,如有则手动清理。 - 全局搜索整个解决方案的代码,查找是否存在
About相关的路由、视图引用或类型调用,逐一修正或删除。
内容的提问来源于stack exchange,提问作者HoboJeff
相关产品推荐
相关产品推荐

