Visual Studio 2019错误列表误报不存在的错误(ASP.NET WebForms项目)
我之前也碰到过完全一样的情况——明明aspx里有带runat="server"的控件,代码后置里就是找不到,改个空格再删掉就能临时搞定,但总这么弄太麻烦。这本质上是Visual Studio的设计器生成的.designer.cs文件没有正确同步导致的,毕竟WebForms全靠这个文件让代码后置能识别服务器控件。试试下面这些方法彻底解决:
强制重新生成设计器文件
右键点击出问题的.aspx文件,选择「转换为Web应用程序」(Convert to Web Application)。不管你的项目本来就是Web应用程序还是网站项目,这个操作都会强制VS重新扫描aspx里的所有服务器控件,更新对应的.designer.cs文件,把缺失的控件声明补进去。检查设计器文件的正确性
打开对应的.aspx.designer.cs文件,看看里面有没有类似protected global::System.Web.UI.HtmlControls.HtmlGenericControl FooterTextSpan;的声明。如果没有,要么用上面的方法自动生成,要么手动添加(不推荐手动,容易写错命名空间或类型)。同时要确认设计器文件的命名空间、继承类名和代码后置文件完全一致。清理+重建整个解决方案
有时候项目的编译缓存会搞出这种识别问题:- 点击VS顶部菜单的「生成」→「清理解决方案」
- 手动删除项目目录下的
bin和obj文件夹(比VS清理更彻底) - 再点击「生成」→「重建解决方案」
这一套操作会清空所有旧缓存,重新生成包括设计器文件在内的所有必要文件,大概率能解决同步问题。
检查VS的设计器同步设置
去「工具」→「选项」→「项目和解决方案」→「Web项目」,确保勾选了「自动刷新设计器文件」(Auto-refresh designer files)选项。另外,如果开了「轻量级解决方案加载」或者「快速启动」,可以暂时关掉,这些功能有时候会干扰设计器的正常同步。确认服务器控件的声明规范
再检查下你的span控件:- 确保
runat="server"属性是正确的(引号不能少,大小写尽量统一用小写) - 控件的
id在当前页面是唯一的,不能有重复id的情况
- 确保
至于为什么改空格的临时方法有效:那是因为VS检测到aspx文件有变化,会触发一次设计器同步,自动更新了.designer.cs,但这只是临时触发了同步,上面的方法能从根源上解决同步失效的问题。
内容的提问来源于stack exchange,提问作者user6911980

