Visual Studio 2015或2017显示IntelliSense错误,但解决方案编译

时间:2015-08-11 13:49:47

标签: visual-studio intellisense visual-studio-2015

我们目前正在评估新的Visual Studio 2015,并遇到了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>

新工作室安装在新安装的Windows 7上,没有任何传统软件(没有VS13)。

我已经尝试清除缓存,删除了suo文件,删除了bin和obj目录,清理并重建了解决方案等。但没有任何效果。

有人可以向我解释这种行为吗?

11 个答案:

答案 0 :(得分:182)

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

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

根据评论:请注意*.suo是隐藏文件。

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

答案 1 :(得分:48)

迁移项目也存在此问题,因此我引用了Microsoft.CSharp dll。在某些项目中,我需要删除并再次添加项目中的Reference。

答案 2 :(得分:17)

在Visual Studio 2017 ASP.Net核心项目中遇到类似问题。以下步骤为我做了诀窍

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

答案 3 :(得分:9)

与其他人类似的问题,但分辨率不同。发布以防我可以帮助其他人。

运行Visual Studio 2017 15.5.2。我使用Git并经常切换分支。几个星期前,我开始让编辑向我显示错误(所有类型都与它找不到的类型相关,即使引用有效)。编译工作得很好。我在VS 2017 15.6 Preview(2018年1月6日)中确认了同样的问题。我会尝试删除缓存,SUO文件或bin / obj文件夹,没有任何影响。起初它似乎工作。重新打开Visual Studio,一切都会很好看。使用&#34;重建解决方案&#34;并且IntelliSense错误将返回。我甚至尝试卸载/重新安装Visual Studio。

我在两台机器上遇到了同样的问题,两台机器都使用相同版本的Visual Studio。

通过查看有关缺失类型的错误,它们似乎都来自两个引用的项目。其中一个引用是解决方案中几乎所有其他项目使用的共享项目,但其中一个项目是一个没有很多引用的小项目。事实上,我的大型共享项目也引用了小项目。在Visual Studio中,我卸载了小项目并重新加载它。错误消失了!他们的错误没有回到Rebuild Solution上。

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

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

答案 4 :(得分:6)

还有这个问题(标题,而不是具体的错误信息),以及编辑器中的波浪线。第一个波浪线位于第一个#include语句下,该语句命名预编译头。 Intellisense无法包含预编译的头,但不会将其列为错误;相反,它会在文件的下方列出错误,代码(非常合理地)依赖于预编译头中的声明。

Intellisense在我的环境中找不到预编译头的原因是命名的头不是实际文件。只要正确配置了预编译的头设置,它就不必在我使用的任何其他VC或gcc版本中,也不必在2015编译器中。显然不再是Intellisense了。我不完全确定它在2013年有所不同,也许我从未注意到。

在不太可能的情况下,这将是此处报告的问题,解决方案很简单:使用#include指令中指定的预编译头的pretend-name创建一个小文件,并让该文件包含预编译头的实际名称。

如果你想知道......为什么#&#39;#中的预编译标题名称之间的区别包括&#39;语句和预编译头的实际文件名?正是因为它保证了正确配置了预编译的头设置。只要预编译的标题是&#34; #include&#34;,就没有可以包含的文件。要么读取实际标头的实际预编译(二进制)版本,要么编译失败。显然,缺点是它会让混淆读取代码,而不仅仅是智能感知。

答案 5 :(得分:2)

Visual Studio 2017(Visual Studio 2017) 我已经从位置.vs \ SolutionName \ v15.suo中删除了“ .suo”文件 然后重新启动Visual Studio。这对我有用。

答案 6 :(得分:1)

今天我遇到了与MSVC ++ 2015类似的问题。我几乎放弃了,决定继续没有IDE提示,但偶尔我注意到子项目的stdafx.h我遇到了问题&# 39; t包含任何标准库头。我建议它可能会减慢模块编译速度,但是标准头文件的包含也固定了Intellisense。

答案 7 :(得分:1)

在Visual Studio 2019中,问题是当项目中安装了NuGet软件包时,使用Git更改分支。我为解决这个问题所做的事情:

  1. 清洁溶液
  2. 关闭Visual Studio
  3. 删除包裹文件夹
  4. 打开Visual Studio
  5. 转到程序包管理器
  6. 还原所有软件包
  7. 重新编译
  8. 如果缺少roslyn,请关闭并打开Visual Studio,然后重新编译。

答案 8 :(得分:0)

我在其他包含目录中有多个stdfax.h。确保您想要的stdafx.h在您的路径中排在第一位。

答案 9 :(得分:0)

我在使用不同的Visual Studio版本时遇到了类似的问题。

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

我的解决方案是,我将Extension StopOnFirstBuildError激活。关闭构建菜单中的“停止构建第一个错误”后,在完全构建解决方案后,Intellisense显示的错误就消失了。

答案 10 :(得分:0)

我只是在发布网站时看到了intellisearch错误。 (ASP / C#site,VS 2017)。他们打破了发布。网站本地运行良好。

通过取消选中预编译设置来清除错误,并且发布正常。   发布 - &gt;设置 - &gt;文件发布选项 - &gt;在发布期间预编译