VisualStudio2015或2017显示 IntelliSense 错误,但解决方案已编译

我们目前正在评估新的 VisualStudio2015,并且遇到了 IntelliSense 的一个奇怪问题。当我使用新工作室编译我们的主要解决方案时,构建成功了,但仍然显示了6个错误。

我发现这不是一个真正的错误,而只是一个智能感知错误。代码绝对正确,所有代码都编译成功。但是代码被标记为红色,错误显示在错误列表中。

所有6个错误都有相同的起源。这是一个简单的构造函数调用。奇怪的是,还有一些完全相同的构造函数没有任何错误。

错误消息:

Code: CS1729
Message: '<the class>' does not contain a constructor that takes that many arguments.
Project: <the project name>
File: <the path to the file>

新的工作室安装在新安装的 Windows7上,没有任何遗留软件(没有 VS13)。

我已经尝试清除缓存,删除 suo 文件,删除 bin 和 obj 目录,清理和重建解决方案等。但都没用。

有人能给我解释一下吗?

59602 次浏览

迁移项目也有这个问题,所以我引用了 Microsoft.CSharp dll。在一些项目中,我需要在项目中删除并再次添加引用。

也有这个问题(标题,而不是具体的错误消息) ,以及弯弯曲曲的行在编辑器。第一个弯曲的行位于第一个 abc0语句下面,该语句命名一个预编译头。Intellisense 没有包含预编译头,但是没有将其列为错误,而是在文件的后面列出了错误,代码(非常正确地)依赖于预编译头中的声明。

Intellisense 在我的环境中找不到这个预编译头的原因是这个头并不是一个真正的文件。只要预编译头设置正确,就不需要在我使用的任何其他 VC 或 gcc 版本中使用,也不需要在2015年的编译器中使用。显然不再是智慧感知了。我不能完全确定2013年是否有所不同,也许我只是从未注意到。

在这里报告的问题不太可能出现的情况下,解决方案很简单: 按照 #include指令的指定,创建一个带有预编译头假名的小文件,并让该文件包含预编译头的实际名称。

如果你想知道... 为什么在“ # include”语句中的预编译头名和预编译头的实际文件名之间有这样的区别?正是因为它保证了预编译头设置的正确配置。无论预编译头是“ # 包含”,周围都没有可以包含的文件。要么读取实际标头的实际预编译(二进制)版本,要么编译失败。显然,它的一个缺点是它会混淆 读取代码,而不仅仅是智能感知。

我有数以千计的智能感知错误和0构建错误。删除 .suo文件并重新启动 VS 后,智能感知错误就消失了。

Suo文件相对于源文件位于: .vs\SolutionName\v14\.suo

根据注释: 请注意,*.suo是一个隐藏文件。

编辑: 根据评论,VS2017也有同样的问题,所以您可以使用类似的解决方案: Delete.vs\SolutionName\v15\.suo

VS2019仍然有这个问题。删除 .vs\SolutionName\v17\.suo

如果删除 .suo仍然可以解决问题,那么也删除解决方案中每个项目中的所有 binobj目录。

今天我在 MSVC + + 2015遇到了类似的问题。我几乎要放弃了,决定不使用 IDE 提示继续下去,但是突然我注意到我遇到问题的项目 stdafx.h 不包含任何标准库头。我推测,在 stdafx.h 中包含项目中使用的所有标准头可能会提高编译速度,但是这样做也会修复智能感知错误。

在 Visual Studio 2017 ASP.Net 核心项目中遇到了类似的问题

  1. 执行清洁解决方案
  2. 关闭 VS
  3. 删除. suo 文件 & 删除 bin/obj 目录
  4. 重开 VS

在附加包含目录中有多个 stdfax.h。请确保您想要的 stdafx.h在您的路径中是第一个。

和其他人的问题相似,但解决方法不同。

运行 Visual Studio 201715.5.2。我使用 Git 并经常切换分支。几周前,我开始让编辑向我显示错误(所有错误都与它无法找到的类型有关,即使引用是有效的)。编译工作很顺利。我在 VS 201715.6预览版(2018年1月6日)中确认了同样的问题。我会尝试删除缓存、 SUO 文件或 bin/obj 文件夹,但没有影响。一开始似乎有效。重新打开 Visual Studio,一切看起来都会很好。使用“重建解决方案”,IntelliSense 错误将返回。我甚至尝试过卸载/重新安装 Visual Studio。

我在两台机器上遇到了同样的问题,两台机器都有相同版本的 VisualStudio。

通过查看关于缺少类型的错误,它们似乎都来自两个引用的项目。其中一个引用是解决方案中几乎所有其他项目都使用的共享项目,但其中一个是没有很多引用的小项目。碰巧这个小项目也被我的大型共享项目引用了。在 VisualStudio 中,我卸载了小项目并重新加载了它。错误消失了!“重建解决方案”上没有返回这些错误。

然后我切换了 Git 分支,所有错误都返回来了。幸运的是,我重复了上面卸载/重新加载小项目的步骤,错误就消失了。

每次切换 Git 分支时,错误都会返回,直到我重复这个过程。对于我卸载/重新加载的较小项目,Git 分支之间没有任何变化。不清楚为什么那个序列会解决我的问题。

我在不同的 VisualStudio 版本中遇到过类似的问题。

删除.suo 或.vs 文件夹对我没有帮助。

对我来说,解决方案是激活扩展 StopOnFirstBuildError。在构建菜单中关闭“ Stop build on first error”之后,在完全构建解决方案之后,Intellisense 显示的错误消失了。

我只是在发布网站的时候看到了智能搜索的错误。(ASP/C # 站点,VS 2017)。他们破坏了出版。本地网站运行良好。

通过取消选中预编译设置来清除错误,它发布得很好。 发布-> 设置-> 文件发布选项-> 发布期间预编译

Visual Studio 2017 我已经从位置. vsSolutionName v15.suo 删除了“ . suo”文件 然后重启了视觉工作室,这招对我很管用。

在 VisualStudio2019中,当项目中安装了 NuGet 包时,使用 Git 更改分支是一个问题。为了解决这个问题,我做了什么:

  1. 清洁解决方案
  2. 关闭 VisualStudio
  3. 删除包文件夹
  4. 开放视觉工作室
  5. 去找包裹经理
  6. 恢复所有包
  7. 重新编译
  8. 如果 Roslyn 丢失,请关闭并打开 VisualStudio,然后重新编译。

我有这个问题与另一个项目的引用。删除和重新添加项目引用为我工作。