asp.net-mvc - 仅在 Razor 编辑器中当前项目的命名空间 "does not exist"错误

标签 asp.net-mvc visual-studio-2019

自从上周升级到 Visual Studio 2019 后,我遇到了熟悉的“命名空间‘Y’中不存在类型或命名空间名称‘X’(是否缺少程序集引用?)”错误。它仅发生在 Visual Studio 2019 的 Razor 编辑器中,并且引用当前项目的命名空间。我已经尝试了在其他几个 StackOverflow 问题上找到的所有熟悉的解决方案,包括清理和重建、清除所有缓存、删除 .suo 文件和其他 VS 生成的文件、卸载插件、更改目标框架(并将其改回),确保命名空间在 Views/web.config 中被引用,并删除对针对旧版本 .NET Framework 的库的引用。这是一个非常常见的错误消息,但据我所知,讨论此错误的其他问题都没有谈到 Visual Studio 报告它无法找到当前项目的命名空间。

example Razor View the model class

屏幕截图显示了一个示例。 Tasks.Web.ModelsWeb 下的红色波浪线显示第二个屏幕截图中显示的类检测错误。该项目名为 Tasks.Web。默认命名空间是相同的,项目中的每个类文件都有一个以 Tasks.Web 开头的命名空间。

该项目是2015年创建的ASP.NET MVC 5项目,在VS2015和VS2017中顺利升级至今未出现此问题。该项目仍在构建和运行;唯一真正的缺点是 Intellisense 一直向我显示此错误,并且它在我打开的每个 View 文件中至少出现一次错误列表。继续处理这个问题或回到 VS2017 对我来说很容易,但我宁愿解决它,并且可能理解它发生的原因,如果它不仅仅是一个错误的话。这似乎发生在引用该项目中定义的模型类的每个 Razor View 上,无论我是在 @model 语句中使用完整路径还是尝试使用 @using 语句反而。有什么想法吗?

附录:通过 R# Rename 重构将命名空间更改为 WebHack 具有以下效果: 1.成功更改所有*.cs文件和*.cshtml文件中的命名空间(表明重构能够检测到命名空间相同)。 2. 工具行为没有变化。红色波浪线仍然存在,显示更新后的命名空间有相同的错误。 注意:完成此测试后删除了 R#,没有任何变化。

附录 2:已更新至 Visual Studio 2019,更新 3 (16.0.3)。没变化。将源代码的干净副本拉到一个新目录中,在 Visual Studio 中运行“加载依赖项”,构建解决方案。没变化;在此解决方案的新副本中的“Web”上也显示相同的“不存在”错误。

附录 3:通过实际卸载所有扩展与 Visual Studio 隔离。删除了问题文本中对 Resharper 的引用。

最佳答案

更新 Nuget 包 Microsoft.Net.Compilers 将解决该问题。现在 Microsoft.Net.Compilers 更依赖于 Roslyn。他们似乎比以前的版本添加了更多内容,导致智能感知在 Visual Studio 2019 上的行为不当。

关于asp.net-mvc - 仅在 Razor 编辑器中当前项目的命名空间 "does not exist"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55925901/

相关文章:

c# - 将复杂的 JSON 提交给 MVC Controller 。如何命名嵌套对象?

c++ - __FILE__和PDB的相对路径

msbuild - Visual Studio 在启动时自动构建解决方案

visual-studio-2019 - 在VS2019中从VS 2017恢复编辑器颜色

c# - 更改 asp.net mvc 模型属性时无法访问数据库

asp.net-mvc - Content 和 LoadContentFrom 之间的区别

javascript - jsGrid 不会渲染 JSON 数据

javascript - jQuery Datatables 未序列化超过 1000 条记录

settings - VS2019 工具 -> 选项 -> 字体和颜色从未保存

c# - 为什么C#编译器在嵌套范围内允许重复的变量?