当前项目的命名空间 "does not exist" 仅在 Razor 编辑器中出错
current project's namespace "does not exist" error in Razor editor only
自从上周升级到 Visual Studio 2019 后,我遇到了熟悉的 "The type or namespace name 'X' does not exist in the namespace 'Y' (are you missing an assembly reference?)" 错误。它仅在 Visual Studio 2019 年的 Razor 编辑器中发生,并引用 当前项目的 命名空间。我已经尝试了在其他几个 Whosebug 问题上找到的所有熟悉的解决方案,包括清理和重建、清除所有缓存、删除 .suo 文件和其他 VS 生成的文件、卸载插件、更改目标框架(并将其改回),确保在 Views/web.config 中引用命名空间,并删除对针对旧版本 .NET Framework 的库的引用。这是一条非常常见的错误消息,但据我所知,none 讨论此错误的其他问题中有 Visual Studio 报告无法找到当前项目的命名空间。
截图显示了一个例子。 Tasks.Web.Models
中 Web
下的红色波浪线显示了检测第二个屏幕截图中显示的 class 的错误。该项目名为 Tasks.Web。默认命名空间相同,项目中的每个 class 文件都有一个以 Tasks.Web
.
开头的命名空间
该项目是2015年创建的ASP.NETMVC 5项目,在VS2015和VS2017中顺利升级至今未见此问题。该项目仍在构建和运行;唯一真正的缺点是 Intellisense 一直向我显示此错误,并且它在我打开的每个视图文件中至少出现一次错误列表。继续处理这个问题或回到 VS2017 对我来说很容易,但我宁愿解决它,并且可能理解它发生的原因,如果它不仅仅是一个错误的话。这似乎发生在每个引用此项目中定义的模型 class 的 Razor 视图上,无论我是在 @model
语句中使用完整路径还是尝试使用 @using
语句。有什么想法吗?
附录:通过 R# Rename 重构将命名空间更改为 WebHack
具有以下效果:
1. 成功更改所有*.cs
个文件和*.cshtml
个文件中的命名空间(表明重构能够检测到命名空间相同)。
2. 工具行为没有变化。红色波浪线仍然存在,显示更新后的命名空间有相同的错误。 注意:完成此测试后删除了 R#,没有任何变化。
附录 2:已更新至 Visual Studio 2019,更新 3 (16.0.3)。没变化。将源代码的干净副本拉入新目录,运行 "Load Dependencies" in Visual Studio,构建解决方案。没变化;在解决方案的这个新副本中,"Web" 上也显示相同的 "does not exist" 错误。
附录 3:通过实际卸载所有扩展与 Visual Studio 隔离。删除了问题文本中对 Resharper 的引用。
更新 Nuget 包 Microsoft.Net.Compilers
将解决该问题。现在 Microsoft.Net.Compilers
更依赖于 Roslyn
。似乎他们比以前的版本添加了更多内容,导致智能感知在 Visual Studio 2019 年表现不当。
自从上周升级到 Visual Studio 2019 后,我遇到了熟悉的 "The type or namespace name 'X' does not exist in the namespace 'Y' (are you missing an assembly reference?)" 错误。它仅在 Visual Studio 2019 年的 Razor 编辑器中发生,并引用 当前项目的 命名空间。我已经尝试了在其他几个 Whosebug 问题上找到的所有熟悉的解决方案,包括清理和重建、清除所有缓存、删除 .suo 文件和其他 VS 生成的文件、卸载插件、更改目标框架(并将其改回),确保在 Views/web.config 中引用命名空间,并删除对针对旧版本 .NET Framework 的库的引用。这是一条非常常见的错误消息,但据我所知,none 讨论此错误的其他问题中有 Visual Studio 报告无法找到当前项目的命名空间。
截图显示了一个例子。 Tasks.Web.Models
中 Web
下的红色波浪线显示了检测第二个屏幕截图中显示的 class 的错误。该项目名为 Tasks.Web。默认命名空间相同,项目中的每个 class 文件都有一个以 Tasks.Web
.
该项目是2015年创建的ASP.NETMVC 5项目,在VS2015和VS2017中顺利升级至今未见此问题。该项目仍在构建和运行;唯一真正的缺点是 Intellisense 一直向我显示此错误,并且它在我打开的每个视图文件中至少出现一次错误列表。继续处理这个问题或回到 VS2017 对我来说很容易,但我宁愿解决它,并且可能理解它发生的原因,如果它不仅仅是一个错误的话。这似乎发生在每个引用此项目中定义的模型 class 的 Razor 视图上,无论我是在 @model
语句中使用完整路径还是尝试使用 @using
语句。有什么想法吗?
附录:通过 R# Rename 重构将命名空间更改为 WebHack
具有以下效果:
1. 成功更改所有*.cs
个文件和*.cshtml
个文件中的命名空间(表明重构能够检测到命名空间相同)。
2. 工具行为没有变化。红色波浪线仍然存在,显示更新后的命名空间有相同的错误。 注意:完成此测试后删除了 R#,没有任何变化。
附录 2:已更新至 Visual Studio 2019,更新 3 (16.0.3)。没变化。将源代码的干净副本拉入新目录,运行 "Load Dependencies" in Visual Studio,构建解决方案。没变化;在解决方案的这个新副本中,"Web" 上也显示相同的 "does not exist" 错误。
附录 3:通过实际卸载所有扩展与 Visual Studio 隔离。删除了问题文本中对 Resharper 的引用。
更新 Nuget 包 Microsoft.Net.Compilers
将解决该问题。现在 Microsoft.Net.Compilers
更依赖于 Roslyn
。似乎他们比以前的版本添加了更多内容,导致智能感知在 Visual Studio 2019 年表现不当。