我们目前正在评估新的 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 目录,清理并重建解决方案等。但没有任何效果。
谁能向我解释这种行为?
我有数千个智能感知错误和 0 个构建错误。删除 .suo
文件并重新启动 VS intellisense 后,错误消失了。
Suo
文件相对于源位于:.vs\SolutionName\v14\.suo
根据评论:请注意 *.suo
是隐藏文件。
编辑:根据评论,VS2017 有同样的问题,所以你可以使用类似的解决方案:删除。vs\SolutionName\v15\.suo
迁移的项目也有这个问题,所以我引用了 Microsoft.CSharp dll。在某些项目中,我需要删除并再次添加项目中的引用。
在 Visual Studio 2017 ASP.Net Core Project 中遇到类似问题。以下步骤对我有用
执行清理解决方案关闭 VS 删除 .suo 文件并删除 bin/obj 目录重新打开 VS
与其他类似的问题,但不同的解决方案。发帖以防我可以帮助别人。
运行 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 分支之间的变化为零。不清楚为什么该序列正在解决我的问题。
也有这个问题(标题,而不是具体的错误消息),以及编辑器中的波浪线。第一个波浪线位于第一个 #include
语句下,它命名了一个预编译的标头。 Intellisense 未能包含预编译的标头,但并未将其列为错误;相反,它在文件的下方列出了错误,这些错误(非常正确地)依赖于预编译头文件中的声明。
Intellisense 在我的环境中找不到预编译头文件的原因是命名的头文件不是实际文件。只要正确配置了预编译的标头设置,它不必在我使用的任何其他 VC 或 gcc 版本中,也不必在 2015 编译器中。显然不再适用于 Intellisense。我不完全确定 2013 年有什么不同,也许我只是没注意到。
在不太可能的情况下,这将是此处报告的问题,解决方案很简单:使用 #include
指令中指定的预编译头的假名创建一个小文件,并让该文件包含实际名称预编译的头文件。
如果您想知道...为什么'#include'语句中的预编译头文件名与预编译头文件的实际文件名之间存在这种区别?正是因为它保证正确配置了预编译的头文件设置。只要预编译的头文件是“#included”,就没有可以包含的文件。读取实际标头的实际预编译(二进制)版本,或者编译失败。显然,一个缺点是它会使阅读代码的人感到困惑,而不仅仅是 Intellisense。
Visual Studio 2017 我已经从位置 .vs\SolutionName\v15.suo 中删除了“.suo”文件,然后重新启动了 Visual Studio。这对我有用。
今天我在 MSVC++ 2015 上遇到了类似的问题。我几乎放弃并决定在没有 IDE 提示的情况下继续,但突然我注意到我遇到问题的项目的 stdafx.h 不包含任何标准库头文件。我推测在 stdafx.h 中包含项目中使用的所有标准头文件可能会提高编译速度,但是这样做也可以修复 Intellisense 错误。
在 Visual Studio 2019 中,当项目中安装了 NuGet 包时,问题是使用 Git 更改分支。我做了什么来解决这个问题:
清理解决方案 关闭 Visual Studio 删除包文件夹 打开 Visual Studio 转到包管理器 恢复所有包 重新编译 如果 roslyn 丢失,关闭并打开 Visual Studio,然后重新编译。
我在其他包含目录中有多个 stdfax.h
。确保您想要的 stdafx.h
在您的路径中首先出现。
我对不同的 Visual Studio 版本也有类似的问题。
删除 .suo 或 .vs 文件夹对我没有帮助。
我的解决方案是,我激活了 Extension StopOnFirstBuildError。在构建菜单中关闭“Stop build on first error”后,完全构建解决方案后,Intellisense 显示的错误消失了。
我仅在发布网站时才看到智能搜索错误。 (ASP/C# 网站,VS 2017)。他们破坏了发布。网站在本地运行良好。
通过取消选中预编译设置来清除错误,并且发布正常。发布 -> 设置 -> 文件发布选项 -> 发布期间预编译
我在引用另一个项目时遇到了这个问题。删除和重新添加项目参考对我有用。
*.suo
文件可能会被隐藏。因此,您需要从 Windows 资源管理器中启用View Hidden files
选项。<%=Foo%>
表示未声明变量,但一切都在运行时有效。