在VS2012的ASP.NET项目中符号加载缓慢

15
我在我的ASP.NET MVC项目中加载符号时遇到了问题。第一次加载Visual Studio并调试我的项目,符号大约在2秒内加载完成。然后我结束了调试会话,进行了代码修改,再次调试时,符号的加载时间约为1分钟。根据我所做的研究,以下是我机器/VS上适用的设置:
在选项/调试/符号/符号文件位置中,“Microsoft符号服务器”未被选中,也没有其他位置。
选项/调试/符号/在此目录中缓存符号已设置为“G:\符号缓存”。我点击了“加载所有符号”,并检查了该目录,看到了很多符号。
只启用了我的代码。
_NT_SYMBOL_PATH和_NT_ALT_SYMBOL_PATH环境变量在我的机器上未定义。
在选项/调试/符号/自动装载符号中设置为“仅为指定模块”,没有指定模块。
我尝试过调试和发布版本构建,结果相同。Ctrl + F5几乎立即加载网站。

我也遇到了这个问题,希望有人能提供答案... - Trap
我通过卸载VS2012及其所有依赖项,删除程序文件中的VS2012文件夹,重新安装VS2012,并从符号服务器缓存所有MS符号(选项->调试->符号)来“修复”了该问题。祝你好运。 - Jason Fry
2
哇,用户961969的解决方案只需要几个小时就能完成 :) - dotsa
4个回答

12
我也遇到了这个问题,原因是我不小心启用了“Microsoft符号服务器”。
您可以通过转到“工具”>“选项”>“调试”>“符号”,然后取消选中“Microsoft符号服务器”来禁用它。
现在它的加载速度与以前一样快。

6
我曾经也遇到过这个问题,并且发现它与通过NuGet获取的第三方程序集有关。在这些情况下,Visual Studio 试图从原始作者机器上似乎存在的路径(即 D:\OriginalAuthor\MyVisualStudioProjects\AwesomeNuGetPackage)加载PDBs,但在我的电脑上,同一路径指的是光驱。然后我通过命令提示符发现,如果您尝试更改目录到没有光盘的光驱,则需要很长时间(约30秒)才能失败。考虑到这一点,我的解决方案就是简单地放置DVD到托盘中。此时,Visual Studio 就能够非常快速地确定该路径不存在,跳过加载PDB并直接进行调试。
因此,如果 Visual Studio 花费了很长时间来加载符号,请观察输出窗口以查看它正尝试访问的路径,并验证您是否可以通过命令提示符快速访问(或快速无法访问)这些路径。
这提出了一个有趣的安全/隐私问题 - 显然,Visual Studio 在程序集中存储了原始 PBD 的绝对路径。我想这不是一个非常重要的问题,但从隐私的角度来看,我不希望我的绝对文件系统路径在未经我的知情同意之前暴露给公众。

1
哈哈哈... "为了解决在Visual Studio中调试的问题,我把一张DVD放进了光驱。" +1,这让我的一天都变好了 :) - Tobias J
就此而言,看起来您可以通过在“工具”->“选项”->“调试”->“符号”下单击“指定排除的模块”,防止VS尝试加载特定DLL的符号。 - Tobias J
我不知道为什么,但恰恰相反的方法对我起作用了。我拿出了一张无关的 DVD。 - EnE_
这个 NuGet 和 PDB 相比于快速舒适的 Java + Maven 解决方案完全不够好。 - xmedeko

4

只需尝试此调试->删除所有断点。对我有效。


0
我有两个.dll文件让我很烦恼,但我不需要调试它们,它们开始花费几分钟的时间来加载。前面提到的解决方案没有帮助。所以我去了选项->调试->符号,在“所有模块,除非排除”单选按钮下点击“指定要排除的模块”链接。然后输入导致问题的.dll文件的名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接