当我保存然后切换文件时,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 在保存时编译