在 Visual Studio 中刷新自动完成 (IntelliSense) 数据库
Posted
技术标签:
【中文标题】在 Visual Studio 中刷新自动完成 (IntelliSense) 数据库【英文标题】:Refreshing the auto complete (IntelliSense) database in Visual Studio 【发布时间】:2013-08-17 14:38:46 【问题描述】:我注意到,一旦我的项目达到一定大小(在我的情况下约为 4,100 行代码),Visual Studio 中的自动完成功能将不再正常工作。我还注意到,一旦第三方库的数量增加(命名空间和类属性和方法不再可见),性能也会下降。
有没有办法手动更新自动完成数据库或为现有项目创建一个新数据库?
我目前在Visual Studio 2008 下工作,但我在Visual Studio 2010 也遇到过这个问题。
【问题讨论】:
可能重复:VS2010 IDE some Intellisense is not working. Intellisense 永远被破坏了。删除 NCB 文件,它会工作一段时间。 或者对于 VS2010 及更高版本,.sdf 文件。 MS 从 VS2010 开始使用 SQL 桌面数据库作为他们的智能感知数据库。关闭您的解决方案,删除 .sdf 文件,然后重新打开解决方案。让它煮一会儿,它应该会扫描你的项目(和所有头文件,包括系统头文件)。 @WhozCraig 是正确的。 【参考方案1】:对于 VS2015、2017 和 VS2019,关闭 Visual Studio 并删除与解决方案相同的文件夹中的 .vs 文件夹。它包含 intellisense 数据库等内容(如果我们知道哪些文件,应该可以只删除特定于 intellisense 的文件)。请注意,如果您删除整个文件夹,您将丢失窗口布局配置等。
对于以前的版本,请关闭 Visual Studio 并导航到您的项目文件夹。那里的 *.sdf 文件包含智能感知数据库 - 如果您删除此文件并在 Visual Studio 中重新打开您的项目,它会重建缓存。
删除 sdf 文件为我解决了这个问题。
有时使用大型解决方案(主要是 C++ 项目)会变成 慢得难以忍受。要修复它,您需要关闭解决方案并继续 删除 .SDF 文件。之后又恢复正常,持续约 一个星期左右,直到你需要再做一次。
根本原因是 SDF 文件碎片化,并且, 根据我所做的 xperf 分析,VS 有时会做 20,000+ 在调试和发布之间更改时随机读取它。推杆 SSD 上的 SDF 文件可以解决问题,但不是必需的。 VS 需要更有效地使用 SDF 文件而不是阻塞 SDF 操作,永远。
来源:https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2255455-fix-the-delete-sdf-file-problem
【讨论】:
在 VS2015 和 2017 下,它现在在与解决方案相同的文件夹中创建一个 .vs 文件夹。那是包含智能感知等内容的文件夹。删除它可以解决问题。 我支持.vs
文件夹删除。这有时也是 IntelliSense PCH 问题的解决方案,但请注意 - 您将丢失窗口布局配置等。
这也适用于 Visual Studio 2019 - 我有一个项目将头文件添加到一个源文件中,即使它构建正确,该源文件的智能感知在对。在我关闭解决方案、删除 .vs 文件夹、重新打开解决方案并重新构建之前,我尝试过的任何方法都无法解决。
@ggcg 默认情况下,“.vs”文件夹是隐藏的 - 您是否在 Windows 中启用了“显示隐藏项目”?您使用的是哪个版本的 Visual Studio?
不删除其中的 .suo 文件会保留布局。 IE。我们可能不完全知道 .vs 目录中的哪些文件用于 Intellisense(尽管很可能是 .db 文件),但我们知道 .suo 用于针对每个用户解决方案的特定选项。【参考方案2】:
在 VS2017 中,当我使用互操作从 C# 调用 CPP 时,当 CPP 端发生某些变化时,我经常遇到这种情况。构造函数参数。
在解决方案中卸载并重新加载CPP项目有助于解决红线..
【讨论】:
你能解释一下你做了什么吗?我正遭受完全相同的情况。我目前正在使用 CMake 构建项目,所以我不知道重新加载 CPP 项目究竟意味着什么。 在解决方案资源管理器中右键单击项目,从菜单中选择卸载。然后再次右键单击,重新加载。红线消失了。但这是 1 年前,也许这些智能标记问题在 VS2019 中得到了解决?我确实遇到过一些情况(例如,.csproj 中的拼写错误可能会导致它)并解决这个问题,请参阅上面的康斯坦丁回答。删除 .vs 似乎是解决 VS 状态缓存问题的“灵丹妙药”。 这也适用于其他项目类型和 VS 版本,只是在 VS2019 中的 .NET Standard 类库上执行此操作。【参考方案3】:我正在使用 Visual Studio 2019,并且在使用 Intellisense 以及其他功能时也遇到了问题。在 Intellisense 停止使用代码格式化之前,我将能够完成大约 2 或 3 次文件更新。
我能够让事情再次正常运行的唯一方法是重新启动 Visual Studio,我尝试删除 intellisense 文件夹和整个 .vs
文件夹,但这并没有解决问题,它有帮助但还有其他事情发生开。
我终于能够通过关闭
下的Track changes
选项来解决此问题
Tools->Options->Text Editor->General
.
【讨论】:
跟踪更改: 选择代码编辑器时,选择边距中会出现一条黄色垂直线,以标记自最近保存文件以来已更改的代码。保存更改后,垂直线变为绿色。【参考方案4】:对于 Visual Studio 2017(我也认为是 Visual Studio 2019),关闭 Visual Studio,进入项目文件夹中的 .vs 文件夹并删除 .suo 文件之外的所有内容,然后重新打开 Visual Studio。
这样您可以重建 Intellisense 缓存而不会丢失您的偏好。
【讨论】:
【参考方案5】:在验证了 3 月 15 日 daniol 的结果后,我进入 .vs 文件夹 -> MyProject 文件夹 -> DesignTimeBuild 文件夹并删除了 .dbtcache 文件,Intellisense 现在可以“智能”工作,不会丢失 Window Layout 或其他 .索信息。我怀疑 eq_ 在 1 月 4 日提供的“Diagnostics.DTBBLog”命令做了同样的事情,但该命令似乎不再可用,至少按那个名称。
【讨论】:
附录:为了验证这个解决方案,我从 RecycleBin 中恢复了 .dtbcache,所有 Intellisense 不跟踪更改的问题都返回了。 附录:关于关注者信息,我是在 VS 2019 v10.16.3 上完成的。【参考方案6】:右键单击解决方案,然后按“重新扫描解决方案”。 它似乎对我有用。
【讨论】:
【参考方案7】:在Visual Studio 2022中,打开Tools -> Options -> [在搜索框中输入“数据库”] -> Text Editor -> C/C++ -> Advanced -> Recreate Database = TRUE,然后重新打开解决方案.
【讨论】:
【参考方案8】:对于 Visual Studio 2017(主要使用 C# 项目),以下内容一直对我有用:
打开命令窗口(查看/其他窗口/命令窗口)[Ctrl+W,A] 输入命令“Diagnostics.DTBBLog”并回车无需关闭解决方案并重新加载等。 发现对于 Visual Studio 2019,此命令已被删除,这真是令人震惊……
【讨论】:
“命令“Diagnostics.DTBBLog”无效”以上是关于在 Visual Studio 中刷新自动完成 (IntelliSense) 数据库的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 的监视窗口中自动刷新 [重复]
在 Visual Assist 或 Vanilla Visual Studio 中切换枚举的自动完成功能
在 javascript 中禁用 Visual Studio 自动完成注释