当我保存然后切换文件时,Visual Studio 冻结

Posted

技术标签:

【中文标题】当我保存然后切换文件时,Visual Studio 冻结【英文标题】:Visual Studio freezes when I save then switch file 【发布时间】:2011-02-08 14:55:56 【问题描述】:

环境:Visual Studio 2010 v10.0.31118.1 SP1,插件:jetBrain、DXCore、VisualSVN Windows 7(最新)

由于很长一段时间Visual Studio真的很慢,所以我试图看看如何重现问题,它真的很简单:我在一个文件中添加一个字母,保存然后尝试打开另一个文件。

然后 Visual Studio 冻结 10 秒或更长时间。如果我只是保存或打开文件,则根本没有挂起。

我用 ProcEx.exe 查看了进程,发现 devenv.exe 有很多 I/O。

因此,我使用 ProcMon 尝试查看发生了什么,我看到 Visual Studio 打开了我网站的每个文件,以及链接到我网站的临时 asp.net 文件夹中的每个文件。

所以我查看了每个“ReadFile”操作的堆栈跟踪,我得到了

0 fltmgr.sys fltmgr.sys + 0x2027 0xfffff880010ab027 C:\Windows\system32\drivers\fltmgr.sys

1 fltmgr.sys fltmgr.sys + 0x48ca 0xfffff880010ad8ca C:\Windows\system32\drivers\fltmgr.sys

2 fltmgr.sys fltmgr.sys + 0x222a3 0xfffff880010cb2a3 C:\Windows\system32\drivers\fltmgr.sys

3 ntoskrnl.exe ntoskrnl.exe + 0x373807 0xfffff80002dda807 C:\Windows\system32\ntoskrnl.exe

4 ntoskrnl.exe ntoskrnl.exe + 0x369e84 0xfffff80002dd0e84 C:\Windows\system32\ntoskrnl.exe

5 ntoskrnl.exe ntoskrnl.exe + 0x36ee4d 0xfffff80002dd5e4d C:\Windows\system32\ntoskrnl.exe

6 ntoskrnl.exe ntoskrnl.exe + 0x375917 0xfffff80002ddc917 C:\Windows\system32\ntoskrnl.exe

7 ntoskrnl.exe ntoskrnl.exe + 0x37f520 0xfffff80002de6520 C:\Windows\system32\ntoskrnl.exe

8 ntoskrnl.exe ntoskrnl.exe + 0x6f993 0xfffff80002ad6993 C:\Windows\system32\ntoskrnl.exe

9 ntdll.dll ntdll.dll + 0x502aa 0x76f602aa C:\Windows\SYSTEM32\ntdll.dll

10 wow64.dll wow64.dll + 0x1bfe3 0x74c0bfe3 C:\Windows\SYSTEM32\wow64.dll

11 wow64.dll wow64.dll + 0xcf87 0x74bfcf87 C:\Windows\SYSTEM32\wow64.dll

12 wow64cpu.dll wow64cpu.dll + 0x276d 0x74b8276d C:\Windows\SYSTEM32\wow64cpu.dll

13 wow64.dll wow64.dll + 0xd07e 0x74bfd07e C:\Windows\SYSTEM32\wow64.dll

14 wow64.dll wow64.dll + 0xc549 0x74bfc549 C:\Windows\SYSTEM32\wow64.dll

15 ntdll.dll ntdll.dll + 0x7c367 0x76f8c367 C:\Windows\SYSTEM32\ntdll.dll

16 ntdll.dll ntdll.dll + 0x32e2e 0x76f42e2e C:\Windows\SYSTEM32\ntdll.dll

17 ntdll.dll ntdll.dll + 0x20056 0x77110056 C:\Windows\SysWOW64\ntdll.dll

18 KERNELBASE.dll KERNELBASE.dll + 0x1b616 0x750bb616 C:\Windows\syswow64\KERNELBASE.dll

19 kernel32.dll kernel32.dll + 0x12345 0x74d82345 C:\Windows\syswow64\kernel32.dll

20 cslangsvc.dll TypeReference_Release + 0x36e86 0x535fbe8b C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

21 cslangsvc.dll TypeReference_Release + 0x36ed9 0x535fbede C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

22 cslangsvc.dll LangService_IsPrimaryThread + 0x2167 0x5357633b C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

23 cslangsvc.dll BaseNode_GetBaseOffset + 0x3f1c 0x536a8311 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

24 cslangsvc.dll BaseNode_GetBaseOffset + 0x39c6 0x536a7dbb C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

25 cslangsvc.dll cslangsvc.dll + 0xedd0 0x534fedd0 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

26 cslangsvc.dll LexData_FindFirstPrecedingNonWhiteChar + 0x1a5a 0x5369b229 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

27 cslangsvc.dll cslangsvc.dll + 0x71efc 0x53561efc C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

28 cslangsvc.dll cslangsvc.dll + 0x71df3 0x53561df3 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

29 cslangsvc.dll cslangsvc.dll + 0x72077 0x53562077 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

30 cslangsvc.dll UsingDirectiveNode_GetName + 0x603c2 0x5366428d C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll

31 kernel32.dll kernel32.dll + 0x13677 0x74d83677 C:\Windows\syswow64\kernel32.dll

32 ntdll.dll ntdll.dll + 0x39d42 0x77129d42 C:\Windows\SysWOW64\ntdll.dll

33 ntdll.dll ntdll.dll + 0x39d15 0x77129d15 C:\Windows\SysWOW64\ntdll.dll

那么你有什么猜测吗?

谢谢

【问题讨论】:

您的 .pdb 不够好。一一禁用加载项。 @Hans Passant:“你的 .pdbs”不够好是什么意思?我会尝试卸载 devexpress。 (因为我不能禁用它,我会尝试作为最后的希望卸载visualSVN) 【参考方案1】:

我找到了解决方案:运行 CCleaner!似乎 Visual Studio 使用了很多临时文件夹,并且每次打开/保存文件时,avast antivirus 都会扫描它。

所以我无法在 avast 中为 temp 文件夹设置过滤器,所以我更喜欢清空它。

【讨论】:

【参考方案2】:

请考虑下载 the Visual Studio 2010 Diagnostic Tool 并将结果发送给 Microsoft。该工具将收集各种性能信息,帮助 Visual Studio 团队提出解决方案(如果这是核心产品的问题)。

【讨论】:

以上是关于当我保存然后切换文件时,Visual Studio 冻结的主要内容,如果未能解决你的问题,请参考以下文章

当我保存文件时,为什么Visual Studio Code会格式化我的文件?

Visual Studio代码 - 保存时文件末尾的新空白行

Visual Studio 代码 - 使用 Tailwind JIT CSS 在保存时编译

带有 Visual Studio 2015 的 Git 切换分支导致更改

Visual Studio代码 - 在构建之前保存文件

如何在 Visual Studio 2019 中为 C# WPF 切换 XAML 中的行注释