带有 VB.NET 的 MVC5:"BC30451: 'ViewData' is not declared." 切换到调试配置时

MVC5 with VB.NET: "BC30451: 'ViewData' is not declared." when switching to Debug configuration

我有一个 MVC5 项目,目前在 "Release Configuration" 上设置,它可以 100% 运行。然而,一旦我将项目配置从 Release 切换到 Debug,然后一切都出错了......即使我将它切换回 Release 模式,一切仍然是坏的。让项目再次运行的唯一方法是从备份中恢复。

这是正在发生的事情。 首先,当 运行 项目时,我得到以下错误:

BC30451: 'ViewData' is not declared. It may be inaccessible due to its protection level.

如果我用 Visual Studio 2013 打开项目中的任何视图,我可以看到各种各样的东西都被标记为错误,例如 ViewData、Html、Url 等。

在视图中引用@Html 或@ViewData 时,通常是指视图的基础class (WebViewPage) 的.Html 和.ViewData 属性。但是,如果我开始键入“@Html”。在任何视图中,我都可以在自动完成中看到它指的是 System.Web.Webpages.Html 命名空间而不是 WebViewPage.Html 属性。就好像视图没有继承自 System.Web.Mvc.WebViewPage class.

关于我可以从哪里着手解决这个问题或为什么会发生这种情况的任何指导?

编辑: 因此,由于没有人回应,我走了很长一段路。我创建了一个全新的 MVC5 项目,通过 Nuget 添加了所有包,然后简单地将我的所有文件从旧项目复制到新项目,现在它可以工作了。

有人知道这到底是什么原因造成的吗?如果项目又突然停止工作,我不想以后再经历这些麻烦。

可能是调试程序集被锁定了。可以关闭Visual Studio,搜索并删除解决方案目录下的所有bin文件夹。然后打开并重建。

其他选项是进入 MVC 项目属性并比较两个构建配置。您是否针对 Release 和 Debug 之间的不同 .NET 框架? 32 位与 64 位?等等?

看起来某些 MVC 程序集已损坏。 您是否检查过引用的程序集是否存在错误?

同时尝试清除所有 .NET 内部缓存。此 Whosebug 主题中的更多信息:Could not load file or assembly ... The parameter is incorrect

好的,我想我已经找到了部分原因。事情是,因为原始代码是有效的(它编译正确并且智能感知拾取它)并且代码曾经工作然后突然间,在编译一天后,它就停止工作了。

总之,在视图中,指定ModelType时,如果不使用全名,就会出现或最终会出现这个错误。 例如,使用:

@ModelType Models.SomeNamespace.SomeClass

将导致错误(即使项目的根命名空间是 "MyProject")并且可以通过简单地指定完整的命名空间和 class 名称来修复。

@ModelType MyProject.Models.SomeNamespace.SomeClass

在我的例子中,导入的 ViewModel class 名称不正确,更正它可以解决问题。