我们正在将 MVC3 站点升级到 MVC4,并将所有 .aspx 视图转换为 Razor .cshtml。项目仍然以 .NET Framework 4 为目标(我试图在这里一次解决一个重大变化)。
现在,Visual Studio 2013 中的 Web 应用程序项目在各处出现数百次相同的错误
找不到类型或命名空间名称“My_MVC4_Site”(您是否缺少 using 指令或程序集引用?)
或者它抱怨像 My_MVC4_Site.Models 这样的命名空间。这是网络应用程序本身的默认命名空间!所以每个 View 的@model
指令都有这个错误。甚至在属于模型或控制器的其他代码文件中,也存在“找不到”错误,而且不仅针对项目的顶级命名空间……就像在 . cs 文件,然后在同一个文件中降低 VS 会说它没有定义。
最奇怪的是该项目仍然在构建,我可以在 Visual Studio 的调试中运行它。所以看起来这只是 Visual Studio 对某些事情感到害怕。
但我真的很想修复它,所以它不会在我编码时向我显示数百个“错误”,禁用许多基本的东西,如 F12 Go To Definition、IntelliSense 等。
- 我验证了项目属性中的默认命名空间是正确的
- 我已将项目的命名空间放在 Views 文件夹的 Web.config 部分
- 当然,我检查了命名空间名称是否有错别字
这些都没有任何区别。
更新
解决方案配置管理器和 MVC4 Web 应用项目本身构建到 Any CPU 平台,这是该项目唯一可用的选项。其他几个依赖项目也是如此,但解决方案中包含的大多数项目都有 Any CPU、x86 和 x64 作为选项。因此,当 Active 解决方案平台设置为 x86 或 x64(我曾经使用过的唯一构建选项)时,大多数项目都会相应地切换,但有几个项目总是停留在 Any CPU。
当这是 Visual Studio 2010 中的 MVC3 项目时,这从来都不是问题,但是我为其余项目创建了一个 x86 平台,清除了解决方案,关闭并重新打开了 VS,重建了解决方案,它工作了。所有那些“类型或命名空间......无法找到”的错误都消失了。VS 再次像 IDE 一样工作,我可以在我的 MVC 视图上使用 Page Inspector 中的 View 以及所有内容。
更新 2
这工作了几天,然后返回了确切的问题:每个视图都显示一个错误,@model
它找不到命名空间,以及上面描述的所有其他内容。
解决方案配置没有改变。自昨天工作以来,我在项目或解决方案中找不到任何更改的内容。
更新 3
我在工作中进入了一个旧的开发箱,还没有人能够重新映像,运行 Visual Studio 2012 Update 4。压缩我的整个 MVC4 项目并在那里解压缩。我修改它的唯一方法是更改项目引用(因为解决方案中的各种依赖项目从那里有不同的路径),但没有进行任何更改。VS2012 中的项目没有任何这些问题:没有错误错误,IntelliSense 和 Page Inspector 工作正常,一切正常。
所以这个MVC4项目,原本是VS2010中的MVC3项目,升级到MVC4,然后在VS2012中开发了一下,刚好VS2013有问题。
更新 4
在处理其他事情时,我下载并解压缩了一个 MVC3 示例项目(https://github.com/tugberkugurlu/MvcRemoteValidationSample,以防你好奇)并在 Visual Studio 2013 中打开它(当时更新 3 或 4;我'我目前在 4)。在通过通常的自动转换过程(因为它是 VS2010 解决方案)之后,该项目表现出所有相同的症状。这证实了我的理论,即这与 VS2013 已弃用对 MVC3 的支持有关。我按照我能找到的所有最佳实践将示例解决方案从 MVC3 提高到 4:没有改进。
我关闭了Visual Studio 2013,删除了解决方案的.suo文件,重新打开VS2013,错误消失了。
我为我的真实网络项目做了同样的事情,错误也消失了。实际上,几个月来我第一次能够在这个项目上像真正的 IDE 一样使用 VS!
但就像我迄今为止发现的所有其他解决方法一样,这只是暂时的:命名空间错误总是在一两天后再次出现,所以我不得不关闭、删除 .suo 并重新打开。