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


122

我们目前正在评估新的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>

新工作室安装在没有任何旧版软件(没有VS13)的全新安装的Windows 7上。

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

谁能向我解释这种行为?


2
intellisense使用的解析器与实际用于编译代码的编译器不同。
2015年

1
这也发生在VS 2013上。可能是VS尚未完成对整个代码库的索引。如果它可以编译并按预期工作,我将不会对其进行任何关注。
代码不同

2
@chill在VS2015中,它应该是同一解析器,是Roslyn的一部分。
Lasse V. Karlsen 2015年

1
您可以创建一个重现问题的小项目吗?如果是这样,您可以发布代码吗?
拉瑟五世卡尔森

该类是部分类,还是它的任何部分在编译时生成?
Panagiotis Kanavos 2015年

Answers:


58

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


3
当团队成员向解决方案中添加一个新项目并将某些CS文件从现有项目迁移到新项目时,我必须这样做。最新时,我看到很多错误,但可以编译并运行。从受害项目中删除并重新添加对新项目的引用对我有用。
比尔

1
比尔所描述的情况恰好发生在我们身上。一些班级被转移到一个新的项目。从源控件中导入新项目引用时,Visual Studio似乎没有更新它的Intellisense缓存。手动重新输入参考迫使VS这样做。
Peter Macej '16

2
解决方案可以编译,但是在某些文件中显示弯曲的错误。仅在Debug中,“ Release”中没有显示错误。删除了Microsoft.CSharp,错误消失了,谢谢!
迈克尔(Michael)

@Michael感谢您的提示。我有完全一样的问题。Release中没有错误,但是Debug中有很多错误。
user2061057 '11

如果提到的类是您自己的代码,则可以排除然后包括包含该类的文件。它应该触发VS更新IntelliSense。#awfulbug
David S.

198

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

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

根据评论:当心这*.suo是一个隐藏文件。

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


7
请注意:*.suo在某些情况下,文件可能会被隐藏。因此,您需要View Hidden files从Windows资源管理器中启用该选项。
阿萨富德2015年

6
杀死.suo对我没有任何作用,但是删除bin和obj目录,然后重新构建解决方案即可。
HolgerBöhnke'16

删除.suo文件并没有为我解决问题(在VS2015中),我在javascript中曲折地弄到了乱七八糟的红色,它引用了后面的代码中的属性: <%=Foo%>说未声明变量,但一切在运行时都有效。
蒂姆(Tim)

我不是100%肯定,但是这也可能解决了XAML带来的无效标记错误
-Geordie

找 。-name“ * suo” -exec rm -rf {} \;
德里克·格里尔

20

在Visual Studio 2017 ASP.Net Core Project中遇到类似问题。遵循步骤对我有用

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

1
这是可行的,但是不时要做这样乏味的事情。在发布模式下构建时,我总是会遇到此问题。奇怪的VS无法自行解决。
nawfal

12

与其他问题相似,但解决方案不同。发布以防我可以帮助别人。

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

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

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

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

每次切换Git分支时,错误都会再次出现,直到我重复该过程。对于我卸载/重新加载的较小项目,Git分支之间的变化为零。不清楚为什么该顺序解决了我的问题。


基于此,我卸载了三个与“测试”或“架构”相关的项目,然后卸载并重新加载了Intellisense错误填充项目(WPF)。0错误(共0错误):) +1的离散细节使我尝试了类似HgCoder的东西!
Steven_BDawg '18

使用VS 2017 15.9.9。使用Git。使用R#。我也定期切换分支。我的错误的确是所有IntelliSense。我注意到项目的卸载导致“项目”列(在“错误列表”选项卡中)转到<未知>。因此,它似乎确实在踢它。卸载项目似乎也对我有用。干净的解决方案+重建解决方案最终产生0错误。
dthal

7

也有这个问题(标题,而不是特定的错误消息),以及编辑器中弯曲的行。第一行弯曲在第一条#include语句下,该语句命名为预编译的标头。Intellisense无法包含预编译的标头,但不会将其列为错误;相反,它会(非常正确地)依赖于预编译头文件中的声明的代码在文件的更下方列出错误。

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

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

如果您想知道...为什么在'#include'语句中的预编译头文件名和预编译头文件的实际文件名之间进行区分?正是因为它保证正确配置了预编译头设置。无论“ #included”是哪里有预编译的头文件,都不会包含该文件。读取实际的标头的实际预编译(二进制)版本,或者编译失败。显然,缺点是它使人们在阅读代码时不仅使Intellisense 感到困惑。


2

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


2

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


1

stdfax.h在“其他包含目录”中有多个。确保stdafx.h您的目标是您的第一步。


1

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

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

对我来说,解决方案是激活扩展StopOnFirstBuildError。在构建菜单中关闭“在出现第一个错误时停止构建”后,在完全构建解决方案之后,Intellisense显示的错误消失了。


1

我仅在发布网站时才看到intelellisearch错误。(ASP / C#网站,VS 2017)。他们打破了出版。网站在本地运行良好。

通过取消选中要预编译的设置来清除错误,并且它可以很好地发布。发布->设置->文件发布选项->发布期间预编译


1

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

  1. 清洁溶液
  2. 关闭Visual Studio
  3. 删除包裹文件夹
  4. 打开Visual Studio
  5. 前往套件管理员
  6. 恢复所有软件包
  7. 重新编译
  8. 如果缺少roslyn,请关闭并打开Visual Studio,然后重新编译。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.