我目前正在使用 Visual Studio 2008 中的 ASP.NET 网站项目,每次我对用户控件的代码隐藏页面进行更改并浏览到使用用户控件的页面时,我都会收到以下错误:
无法将“ASP.basepage_master”类型的对象转换为“ASP.basepage_master”类型。
我必须重建我的整个解决方案才能解决此错误。有没有其他人遇到过这个错误,他们知道如何解决吗?
我目前正在使用 Visual Studio 2008 中的 ASP.NET 网站项目,每次我对用户控件的代码隐藏页面进行更改并浏览到使用用户控件的页面时,我都会收到以下错误:
无法将“ASP.basepage_master”类型的对象转换为“ASP.basepage_master”类型。
我必须重建我的整个解决方案才能解决此错误。有没有其他人遇到过这个错误,他们知道如何解决吗?
删除您的临时 ASP.NET 文件(C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 中的所有内容)会使它消失......一段时间。
这是有道理的,据我了解。
您正在更改代码隐藏。为了使这些更改生效,您需要构建该项目,以便可以将代码隐藏编译到该项目的 DLL 文件中。当您更改代码隐藏并且不构建项目时,您实际上拥有该页面的两个版本,而 ASP.Net 无法解析这两个版本。因此,当您编译该类时,更改将被协调到 DLL 中。
如果我在本地工作站上停止并重新启动 IIS,我能够解决此问题。
尤里卡!!明白了...这个有效...
当您拖放用户控件或通过该LoadControl
方法加载它时,请在其路径中使用“波浪号”。例如this.LoadControl("~/MyUserControl.ascx");
这同样适用于放置在页面上的控件。将波浪号添加到 aspx 页面中用户控件的声明性路径。
我们可以将其称为 VS2005 中的错误,并在 VS 2008 中修复。
如果这不起作用或需要更多解释,请回复我。或者,不要忘记将此标记为答案。
我遇到了同样的问题,我终于能够建立网站。
我必须为 ASP.NET 项目创建另一个具有不同名称的母版页,将原始内容复制并粘贴到新的母版页中,使我的所有子窗体都从新母版页继承,并删除旧的母版页.
该网站现在将运行。我不知道调试器是如何混淆并开始使用不存在的缓存对象的。我尽一切努力让它释放该缓存(删除下C:\%USER%\AppData\Local
和下的临时文件C:\Windows\Microsoft.NET
,重命名母版页,重命名主类,更改文件以强制它们重新加载,重建解决方案,添加web.config
选项<compilation batch="false" debug="false"/>
)除了删除母版页。
删除母版页为我修复了它,但我不明白为什么我必须这样做。
这是我挣扎的线索: