Visual Studio 2015:智能感知错误,但解决scheme编译

我们目前正在评估新的Visual Studio 2015,并遇到了intellisense的一个奇怪的问题。 当我编译我们的主要解决scheme与新的工作室build设成功,但仍然显示6错误。

我发现这不是一个真正的错误,但只是一个intellisense错误。 代码是绝对正确的,一切编译成功。 然而,代码被标记为红色,错误列表中显示错误。

所有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)。

我已经尝试清除caching,删除suo文件,删除bin和obj目录,清理和重build解决scheme等,但没有任何工作。

任何人都可以向我解释这种行为?

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

我有成千上万的intellisense错误和0构build错误。 删除.suo文件后,重新启动VS智能感知错误消失了。

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

根据评论:谨防* .suo是一个隐藏的文件。

编辑:根据意见,VS2017具有相同的问题,所以你可以使用类似的解决scheme:删除.vs \ SolutionName \ v15.suo

也有这个问题(标题,而不是具体的错误信息),以及在编辑器中的波浪线。 第一个波形线在第一个#include语句下,它命名了一个预编译的头文件。 智能感知不能包括预编译头,但不会将其列为错误; 相反,它列出了文件的更深层次的错误,代码(非常正确地)依赖于预编译头文件中的声明。

Intellisense在我的环境中找不到预编译头文件的原因是,名称不是真实文件。 只要预编译的头文件设置被正确configuration,它不一定要在我使用的任何其他VC或gcc版本中,也不在2015编译器中。 显然不再是智能感知。 我不完全确定它在2013年是不同的,也许我从来没有注意到。

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

如果您想知道为什么“#include”语句中预编译头名称与预编译头文件的实际文件名之间的区别? 正是因为它保证了预编译头部设置被正确configuration。 无论预编译的头文件是“#included”,都没有可以包含的文件。 实际标题的实际预编译(二进制)版本被读取,或者编译失败。 显然,一个缺点是它让人们阅读代码的困惑,而不仅仅是智能感知。

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

  1. 执行清洁解决scheme
  2. closuresVS
  3. 删除.suo文件和删除bin / obj目录
  4. 重新打开VS

今天我遇到了类似的问题,MSVC ++ 2015。我几乎放弃了,并决定继续没有IDE的提示,但偶尔我注意到,我有问题的子项目stdafx.h不包含任何标准的库标题。 我build议,它可能会减慢模块编译,但在那里包括标准头文件也修复了Intellisense。

其他包含目录中有多个stdfax.h 。 确保你想要的stdafx.h你的第一个path。