ChatGPT解决这个技术问题 Extra ChatGPT

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

我们目前正在评估新的 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 目录,清理并重建解决方案等。但没有任何效果。

谁能向我解释这种行为?

intellisense 使用的解析器与用于实际编译代码的编译器不同。
这也发生在 VS 2013 上。可能是 VS 还没有完成对整个代码库的索引。如果它按预期编译和工作,我不会关注它。
@chill 在 VS2015 中,它应该是同一个解析器,是 Roslyn 的一部分。
你能创建一个重现问题的小项目吗?如果是这样,您可以发布代码吗?
类是部分的,还是它的任何部分在编译时生成?

K
Karel Kral

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

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

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

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


请注意:在某些情况下,*.suo 文件可能会被隐藏。因此,您需要从 Windows 资源管理器中启用 View Hidden files 选项。
杀死 .suo 对我没有任何影响,但是删除 bin 和 obj 目录然后重建解决方案就可以了。
删除 .suo 文件并没有解决我的问题(在 VS2015 中)我在 javascript 中得到了虚假的红色波浪,它引用了来自代码隐藏的属性:<%=Foo%> 表示未声明变量,但一切都在运行时有效。
我不是 100% 确定,但这也可以修复我在使用 XAML 时遇到的无效标记错误
寻找 。 -name "*suo" -exec rm -rf {} \;
G
Guilherme de Jesus Santos

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


当团队成员向解决方案添加一个新项目并将一些 cs 文件从现有项目迁移到新项目时,我不得不这样做。当我得到最新的时候,我看到了很多错误,但我可以编译和运行。从被冒犯的项目中删除并重新添加对新项目的引用对我有用。
与比尔描述的情况完全相同的情况也发生在我们身上。一些课程被转移到一个新项目。从源代码管理导入新项目引用时,Visual Studio 似乎没有更新它的 Intellisense 缓存。手动重新输入参考迫使 VS 这样做。
解决方案编译,但在某些文件中显示波浪形错误。 “发布”中没有显示错误,只是在调试中。删除了 Microsoft.CSharp,错误消失了,谢谢!
@Michael感谢您的提示。我有完全相同的问题。 Release 中没有错误,但 Debug 中有很多错误。
如果提到的类是您自己的代码,您可以排除然后包含包含该类的文件。它应该触发 VS 更新 IntelliSense。 #awfulbug
N
Naren

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

执行清理解决方案关闭 VS 删除 .suo 文件并删除 bin/obj 目录重新打开 VS


这行得通,但不时做这样一件乏味的事情。在发布模式下构建时,我总是遇到这个问题。奇怪的 VS 无法自己弄清楚。
删除 obj 目录会有所不同并使其正常工作(因为 bin 已经为空)。
H
HgCoder

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

运行 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!
使用 VS 2017 15.9.9。使用 Git。使用 R#。我也经常切换分支。我的错误确实都是 IntelliSense。我注意到项目的卸载导致“项目”列(在错误列表选项卡中)转到 <未知>。所以,它似乎确实有点踢它。卸载项目似乎也对我有用。清洁解决方案 + 重建解决方案最终产生 0 个错误。
S
Stein

也有这个问题(标题,而不是具体的错误消息),以及编辑器中的波浪线。第一个波浪线位于第一个 #include 语句下,它命名了一个预编译的标头。 Intellisense 未能包含预编译的标头,但并未将其列为错误;相反,它在文件的下方列出了错误,这些错误(非常正确地)依赖于预编译头文件中的声明。

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

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

如果您想知道...为什么'#include'语句中的预编译头文件名与预编译头文件的实际文件名之间存在这种区别?正是因为它保证正确配置了预编译的头文件设置。只要预编译的头文件是“#included”,就没有可以包含的文件。读取实际标头的实际预编译(二进制)版本,或者编译失败。显然,一个缺点是它会使阅读代码的人感到困惑,而不仅仅是 Intellisense。


S
Saurabh Raoot

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


M
Minor Threat

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


D
Daniel Lobo

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

清理解决方案 关闭 Visual Studio 删除包文件夹 打开 Visual Studio 转到包管理器 恢复所有包 重新编译 如果 roslyn 丢失,关闭并打开 Visual Studio,然后重新编译。


佚名

我在其他包含目录中有多个 stdfax.h。确保您想要的 stdafx.h 在您的路径中首先出现。


F
Fabian

我对不同的 Visual Studio 版本也有类似的问题。

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

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


R
Rahn

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

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


C
Chris

我在引用另一个项目时遇到了这个问题。删除和重新添加项目参考对我有用。