ChatGPT解决这个技术问题 Extra ChatGPT

Visual Studio 调试/加载非常慢

我无计可施。 Visual Studio 通常调试起来非常缓慢,或者只是简单地加载(“不调试就开始”)我的 ASP.NET MVC 站点。并非总是如此:起初,项目会加载得又快又好,但一旦加载缓慢,之后它们总是会加载缓慢。我可能要等 1-2 分钟或更长时间。

我的设置:

我目前正在使用 Visual Studio 2012 Express,但我在 Visual Studio 2010 Express 中也遇到了同样的问题。我的解决方案存储在网络驱动器上;具体来说,如果重要的话,它会将我的文档重定向到网络驱动器。 (不应该。有时我的网站在此设置下加载速度非常快。)

我通常在 Internet Explorer 9 中加载,但在 Firefox 中也会出现同样的问题。

这可能发生在我从事的任何 ASP.NET MVC 项目中,并且它似乎围绕着 DisplayTemplates,这是我所有的 ASP.NET MVC 项目所做的。如果这很重要,那就是 C# 和 Razor。

症状:

系统将加载我的符号数百次。基本上如下,但至少有 300 行这样的行,每行都有用于相同 CSHTML 的略有不同的 DLL 文件:

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.xighmhow.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.cv5hktkf.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.1o77hs8i.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.jja-77mw.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.l_e9ev_s.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.b4n59gom.dll', Symbols loaded.

在上面,我有三个 DisplayTemplate:“Contact”、“Location”和“StatusCode”。每次调用显示模板时,IIS 似乎都会加载符号两次。因此,如果我要显示一个包含 100 个条目的表格,这些条目调用所有这三个显示模板,则加载了 600 个单独的符号。

这也不是一个快速的操作。 IIS 生成的日志文件大约需要 200 毫秒才能加载每个符号。因此,超长延迟。

我试过的:

Debug 或 Release 版本,没关系。

将我的项目放在 Web 服务器上的完整 IIS 实现上,运行速度非常快,没有任何问题。

Cassini、IIS Express 7.5 和 IIS Express 8.0 都有这个问题。

删除所有断点什么都不做。

清洁解决方案,或删除 .suo 也无济于事。

如果我修复 IIS Express/删除 My Docs\IISExpress 文件夹,或修复/重新安装 Visual Studio → 问题可能会消失,但只会持续一段时间,然后才会再次出现。

任何建议都值得赞赏。

要回答更多问题,是的,我的机器肯定有马力。令人气愤的是,同一个项目,没有任何改变,有时可以很快加载,通常是在我修复 IIS 之后 表达并删除 My Docs\IISExpress 文件夹。最终,“某事”发生了,再次加载只需 2 分钟。我正在做的不是一个复杂的项目。没有外部库或依赖项,我的 VS.NET 也没有任何附加组件。

值得注意的是,这台机器有 Symantec Endpoint Protection,它有造成严重破坏的历史。但是完全禁用它(成为管理员很好)并没有解决问题。

在这一点上,我有一个理论。我认为这完全是因为我正在处理网络共享的重定向文件夹。当调试器检查它的数百个“加载符号”行时,我停下来看看它在做什么。它在我的代码中,加载了我拥有的 DisplayTemplate。进入模板输出:

Step into: Stepping over non-user code 'System.Threading.WaitHandle.InternalWaitOne'
Step into: Stepping over non-user code 'System.Threading.WaitHandle.WaitOne'
Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated'
Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCapture'
Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch'
Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch'
Step into: Stepping over non-user code 'System.Web.Compilation.AssemblyBuilder.Compile'
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.bciuyg14.dll', Symbols loaded.
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.CompileWebFile'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultInternal'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists'
Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName'
Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView'
Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.Find'
Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.FindPartialView'
Step into: Stepping over non-user code 'System.Web.Mvc.Html.TemplateHelpers.ActionCacheViewItem.Execute'
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.kwj3uqan.dll', Symbols loaded.
Step into: Stepping over non-user code 'System.RuntimeType.CreateInstanceSlow'
Step into: Stepping over non-user code 'System.Web.Mvc.DependencyResolver.DefaultDependencyResolver.GetService'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerViewEngine.DefaultViewPageActivator.Create'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerCompiledView.Render'

看起来 Visual Studio 每次调用它时都会重新编译我的显示模板,这又是数百次。我的理论是 Visual Studio 编译文件,将其保存到网络共享,然后以某种方式在其上标记新时间,然后 Visual Studio 认为文件已更改。因此,Visual Studio 再次重新编译它。虽然只是一个理论;我真的一点头绪都没有。

一方面,显然,我有离线文件(这是办公室里的台式电脑;我不在乎)。我将禁用,重新启动,然后明天重试。

另外,将我的项目按原样移动到本地 C: 可以修复它。它加载非常快。但这在工作环境中并不理想。我丢失了以前的版本,我的代码根本没有备份,除非我手动复制它,而且它不再与任何人共享。

如果涉及到它,我可以将它从 C 来回复制到网络共享。等待两分钟加载每个页面更烦人。

我有很多问题:你运行它的机器呢?它是否有足够的马力来完成您想要做的事情?有第三方插件吗?你有什么样的防病毒软件?
用更多信息更新了我的问题。
删除脱机文件似乎只是解决办法。它工作了一段时间,然后问题又回来了。但我还有另一个可能的答案。更新我的解决方案。
第二个防病毒问题,我在运行 ThreatFire 时遇到了重大问题。暂时关闭它至少可以为我加快数百倍的调试器速度。关闭我的主要 AV(Avast!)只起到了一点作用。
@JohnSaunders 您是否尝试在管理员模式下运行它?:stackoverflow.com/questions/36322440/…

R
Răzvan Flavius Panda

以下是我在 Visual Studio 2012 中解决“符号加载缓慢”问题的方法:

转到工具 -> 选项 -> 调试 -> 常规

选中“仅启用我的代码”旁边的复选标记。

转到工具 -> 选项 -> 调试 -> 符号

单击“...”按钮并在本地计算机上的某处创建/选择一个新文件夹以存储缓存的符号。我将我的命名为“符号缓存”并将其放入 Documents -> Visual Studio 2012。

单击“加载所有符号”并等待从 Microsoft 的服务器下载符号,这可能需要一段时间。请注意,加载所有符号按钮仅在调试时可用。

取消选中“Microsoft 符号服务器”旁边的复选标记,以防止 Visual Studio 远程查询 Microsoft 服务器。

单击“确定”。

从现在开始,符号加载应该更快。

请注意,如果您对 Microsoft 程序集进行任何更改/下载,您可能需要返回“符号”对话框并再次“加载所有符号”。


恐怕我没有办法解决。对于那些围绕 Microsoft 符号问题的人来说,这将是一个很好的解决方案。对我来说不幸的是,我的问题似乎围绕着我自己的符号。这些符号已经在本地缓存,并且出于某种原因,仅在一页加载中就编译了数百个图块。
感谢这个提示我在这里遇到的一个问题是加载所有符号按钮对我来说是禁用的有什么想法吗?
@ChrisMcGrath 试试这个链接 social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/…。顺便说一句,感谢您的出色回答
即使按照您的步骤操作,“加载所有符号”按钮也是隐藏的,我无法单击它。我现在该怎么办?我正在使用 VS Express 2012。
这是禁用按钮加载所有符号的解决方案:按钮仅在调试时可用。
m
moke

关闭 IntelliTrace 为我解决了这个问题。

在 Visual Studio 中,工具 -> 选项 -> IntelliTrace

然后,取消选中“启用 IntelliTrace”复选框。

https://i.stack.imgur.com/dKLxZ.png


单步执行我的一个单元测试时,我遇到了这个问题。 Intellitrace 打开大约需要 300 秒,关闭大约需要 14 秒。这个修复真的对我有用。
将我的启动时间从 25 秒提高到 6 秒。我认为这很有帮助,因为我在应用程序启动时运行了很多自己的代码
该死的......从1分钟到10秒。在 VS2012 Ultimate 中默认选择它。当心伙计们
在工具 => 选项中找不到 Intellitrace。 .. 我有 vsComunity 2015
在 Visual Studio 2015 中,Intellitrace 仅存在于 VS 2015 企业版中。
C
Carthic

这些都不适合我,但我在已删除的符号上找到了断点。似乎 2010 年就这样挂了。要查看这是否是您的问题,请执行 debug->windows->breakpoints 如果其中有任何问题,请删除它们。

桑德斯,提到他检查过,但在这个问题的解决方案中没有提到。也许对某些人来说是常识,但不是我们所有人。


我突然开始在 VS2010 中遇到这个问题,确实是我的断点之一导致了它。当我清除断点后,它又变快了。
哇..VS2012 爬起来了,5 分钟就建了一个简单的项目。清除了所有的断点,它又快速变亮了,谢谢!!
在阅读本文并按照您所说的进行之后,我发现一个断点以某种方式放置在我的一个 edmx 实体文件的 XML 代码中。你这个男人/女人。
万分感谢。这解决了我的 VS2010 性能非常慢的问题。
这也适用于我在 Visual Studio 2015 中遇到的缓慢调试问题。
G
GaTechThomas

我删除了“临时 ASP.NET 文件”文件夹,我的 localhost 页面加载得到了显着改善。这是路径... %temp%\Temporary ASP.NET Files\


C:\Users\{USER_NAME}\AppData\Local\Temp 是路径,“AppData”文件夹是隐藏文件夹
我在这里发现了 1GB 的旧垃圾……全部删除,VS 运行得更好一些。 :)
r
rkawano

你启用了FusionLog吗?

开始调试时,我的 VisualStudio 启动、打开解决方案和加载符号非常慢。仅在我的机器上很慢,但在其他机器上却没有。

FusionLog 将大量日志内容写入磁盘。就我而言,只需在 RegEdit 上禁用它就可以解决所有问题。

这是注册表中的 FusionLog 键:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

检查 ForceLog 值(1 启用,0 禁用)。


嗯...非常好的答案。我在同一条船上。我很久以前也启用了 FusionLog,但忘了禁用它。现在调试 ASP.NET MVC 应用程序要快得多。感谢上帝和@rkawano。 :)
找不到“ForceLog”键 - 猜它在 Win10 中消失了?
@ChristopherD.Emerson 如果你没有看到这个密钥,你肯定没有启用 fusionlog。
L
LeftyX

我遇到了同样的问题,并尝试了上述大多数解决方案。简单地删除缓存和临时文件最终对我有用。

尝试删除这两个文件夹的内容:

C:\Users\\{UserName}\AppData\Local\Microsoft\WebsiteCache

C:\Users\\{UserName}\AppData\Local\Temp(尤其是 iisexpress 和 Temporary ASP.NET Files 文件夹)。

这可以设置为在登录到 Windows 时自动发生,方法是向 C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 文件夹添加一个 cmd 文件,其中包含以下内容:

rmdir C:\Users\\{username}\AppData\Local\Microsoft\WebsiteCache /s /q

rmdir C:\Users\\{username}\AppData\Local\Temp /s /q

这行得通。 “AppData”文件夹是一个隐藏文件夹,以防万一有人找不到。
就是这个!它运行得非常好,以至于我现在在登录 Windows 时自动实现它:我已将一个名为 DeleteVisualStudioCache.cmd 的文件添加到 C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\使用以下命令启动: rmdir C:\Users\{username}\AppData\Local\Microsoft\WebsiteCache /s /q rmdir C:\Users\{username}\AppData\Local\Temp /s /q pause
B
Ber'Zophus

我想我可能最终至少知道了原因,尽管不是原因。当问题再次出现时,我注意到大量“conhost.exe”进程成为孤儿。我会关闭 Visual Studio,它们会保持打开状态。结束每个人的任务最终可靠地解决了问题。 [希望]

(请注意,conhost.exe 不是 Visual Studio 进程,尽管 Visual Studio 使用它。因此,那里的其他用户可能有其他运行 conhost.exe 的应用程序。我知道我的机器没有,这就是为什么我可以安全地结束除 YMMV 之外的所有任务。)

至于为什么会这样?当我一次打开多个项目时似乎会发生这种情况,我倾向于经常这样做,即使我在任何时候只构建和调试其中一个。

编辑#1 - 不幸的是,这不是“银弹”。它并不总是对我有用。通常,当事情变得缓慢时,我会关闭所有 Visual Studio 会话,然后进入任务管理器并结束它的任何实例,conhost.exe、iisexpress.exe Microsoft.VisualStudio.Web.Host.exe 和 MSBuild.exe我可以找到。

通常,在那之后,当我重新启动我的项目时,它会快速加载。但不总是。

真的,我认为最好的做法可能是不要从重定向的文件夹/网络共享中构建和调试代码。

编辑 #2 - 两年后,这对我来说在 Visual Studio Community 2013 中仍然是一个问题,但我似乎至少找到了罪魁祸首任务:Explorer.exe。是啊,谁知道。我结束该任务的那一刻,bam,页面在一秒钟内加载。

如果我有一个 Windows 资源管理器文件浏览器打开到我重定向的网络驱动器(这通常是因为这是我的代码所在的位置),则似乎会发生此问题。关闭窗口是不够的,我必须杀死整个 Explorer.exe 任务。我只能猜测它在做什么......文件句柄发疯了?

我通常可以使用任务管理器来启动一个新的 explorer.exe 任务(我只能使用这么多的 alt-tabbing),并且 Visual Studio 将继续快速加载。但是,如果我再次打开 Windows 资源管理器,它几乎总是会回到超慢动作。

所以,如果你有一个重定向的网络共享,试一试。它肯定比在本地工作要好。


我知道这是一个有点旧的消息,但我遇到了同样的问题。我的团队建议我使用构建脚本将文件从本地源复制到运行文件的位置,并且每次我单独运行该子例程时,它都会创建一个 conhost.exe 而不会关闭它。一旦我结束了所有额外的副本,它就会再次以闪电般的速度运行。
C
Community

以上都是很好的解决方案,我都尝试了,但得到了解决方案here,即

Debug -> Delete All Breakpoints

D
DMadden51

对我来说,它是 IE 9.08.8112.16241。当我使用 Firefox 或 Chrome 时,使用 F10 或 F11 进行调试时不会出现缓慢的调试。我不知道 IE 的问题是什么,但我现在正式鄙视使用它进行测试。

更新:我已关闭所有 IE 程序附加组件,它已恢复全速。一次打开它们显示 LastPass(在我的情况下)是罪魁祸首。我想我毕竟不能责怪 MS。

几年后...如果您使用 Brave,您可以轻松访问您的扩展,并在调试时一次(或多个)关闭它们。

brave://extensions

只需单击切换滑块。请注意,除了 DuckDuckGo 隐私必需品之外,我的所有内容都已开启。它们没有被删除,只是暂时禁用。

https://i.stack.imgur.com/1sbdP.png


这也解决了我的问题。在尝试调试时,我得到了完整的系统锁定,尤其是在使用 QuickWatch 窗口时。 LastPass 工具栏需要被禁用。 (即 10.0.9200.16635)
这就是我喜欢 StackOverflow 的原因。但 LastPass 应该解决这个问题 - 我现在正在给他们发电子邮件让他们知道。 VS2013和IE 11显然仍然存在问题。禁用LastPass并恢复正常。感谢 UserBlueOne 提供的信息 - 可以重新开始工作。
吓坏了最后一票!在 VS 2012 中使用我的 MVC 应用程序进行调试时,我的键盘完全塞满了。禁用 LastPass,一切又飞起来了。谢谢!赞成。
在带有 IE 的 Win8.x 中,如果您使用 MS 帐户登录,您可以让它同步您的登录信息,因此无需使用 LastPass,但仍然有(部分)好处,:)
这……对我有用。请注意,现在是 2019 年——六年后——我正在使用带有 Microsoft Edge 的 LastPass 插件。
D
Danny Beckett

对我来说,我实现了 this tip,它通过将以下两个属性添加到 web.config 中的编译标记来显着提高性能

<compilation ... batch="false" optimizeCompilations="true"> ... </compilation>

batch="false" 有什么作用?

它通过仅编译已更改并需要重新编译的页面来使预编译更具选择性

optimizeCompilations 到底在做什么? Source

ASP.NET 使用每个应用程序的哈希码,其中包括许多事物的状态,包括 bin 和 App_Code 文件夹以及 global.asax。每当 ASP.NET 应用程序域启动时,它都会检查此哈希码是否与之前计算的有所不同。如果有,那么整个 codegen 文件夹(已编译和影子复制的程序集所在的位置)将被清除。当启用此优化时(通过 optimizeCompilations="true"),哈希不再考虑 bin、App_Code 和 global.asax。因此,如果这些更改我们不会清除 codegen 文件夹。

参考:Compilation element on MSDN


感谢您的发表。这实际上比公认的答案更能提高我的表现。
@Ber'Zophus 你能试试这个并与我们分享你的结果吗?
编译进入 system.web
确认适用于其中的大型解决方案和 Web 应用程序 (MVC)。
a
arkhivania

我在调试时也遇到了执行性能问题,我尝试了很多调试器选项。在我的情况下,当我更改此选项时实现了巨大的性能:

工具 - 选项 - 调试 - 输出窗口 - (常规输出设置 - 所有调试输出) - 关闭


C
Community

启用“本机代码”调试器时,我遇到了 Visual Studio 调试缓慢的问题。尝试禁用它。

在“Visual Studio 2012”上,转到:

项目属性 -> Web -> 调试器(页面底部)。 -> 禁用除 ASP.NET 之外的所有内容

希望能帮助到你。

类似问题:12


不幸的是,我的已经设置好了,所以对我来说没有修复。但可能是其他人尝试的好建议。
那为我修好了!
s
shamp00

就我而言,它是带有 VS 2012 的 .NET Reflector Visual Studio Extension(版本 8.3.0.93)。每次 Step Over (F10) 的调试需要 10 秒。

在 Visual Studio 中,转到 Tools/Extensions and Updates... 并禁用 .NET Reflector Visual Studio Extension。不要忘记重新启动 Visual Studio。


我发现这也导致了我的问题。只有在禁用扩展后,我才查看是否有其他人注意到它。
t
toddmo

就我而言,它是

Tools/Options/Debugging/General/Enable JavaScript debugging for ASP.NET (Chrome and IE)

一旦我取消选中它,我的调试开始时间从 45-60 秒下降到 0-5 秒。


这个是最快的
L
Larry

有一次,停电后,每次遇到断点或抛出异常时,我都不得不面对同样的缓慢问题。

我模糊地记得“suo”文件(与“sln”解决方案文件位于同一目录中)可能已损坏并使一切变慢。

https://i.stack.imgur.com/qC8bM.png

我删除了我的“suo”文件,一切正常。 .suo 文件删除是无害的,仅意味着重新创建我的 Windows 布局以及启动项目和一些其他非关键自定义。


我刚刚意识到我在停电后也变得很慢,非常感谢这个答案。
在更高版本的 Visual Studio 中查找 .vs 文件夹。删除那个。
G
Geeky Ninja

我也遇到了这个问题,以下是我执行的步骤,它总是对我有用:

删除解决方案的 .suo 文件。

删除临时 ASP.NET 文件(您可以在 %WINDOW%\Microsoft.NET\Framework\\Temporary ASP.NET Files 中找到它)

删除应用程序中的所有断点。


重新启动使其花费的时间比正常时间长 5 倍,而不是比正常时间长 10 倍。删除 .suo 文件使其几乎立即启动。谢谢!
似乎删除 .suo 文件有效。有什么理由删除这些文件有助于提高性能。?
@SharpCoder .suo 包含很多信息,例如当前在 IDE 中打开了哪些文件、调试器信息、本地设置等。当这些文件损坏时,vs 开始消耗更多的 CPU 使用率,导致 VS 变慢甚至挂起一些案例。
A
Andrew Davis

我不知道您是否仍然遇到此问题,但我在 Visual Studio 中通过将调试器附加到进程本身来调试站点,而不是让 VS 为我做这件事,我发现它可以大大缩短时间。我为 VS 使用了一个名为 AttachTo 的扩展,并且我有一篇关于如何使用它的小文章 here

我希望这有帮助。


L
LazyZebra

通过禁用浏览器链接解决了我的慢速 VS 问题

https://i.stack.imgur.com/mSMkg.png


我知道“谢谢”的评论在这里有点不受欢迎,但说真的,非常感谢。这一变化使我正在测试的程序从缓慢到无法使用到基本上即时反应的程度。你可能每天给我带来大约一两个小时的生产力,只是因为不必等待加载
@thnkwthprtls 不客气 - 您需要注意的那些 MS 默认设置之一:)
没有必要禁用它,请参阅我的答案=> stackoverflow.com/a/34979659/2736742
人非常感谢!我现在可以更好地工作 muuuuuuch,正如巴西人所说:'你就是那个人'!
z
zmercier

如果有人注意到此行为来自左侧字段,请检查以确保您没有在 web.config 中设置任何断点。我一定是通过鼠标单击设置了一个,它确实减慢了所有调试操作。


我自己也有同样的事情。差点把我逼疯了。为什么 web.config 文件中的非活动断点会完全破坏调试?
C
Community

在花了一整天等待符号以与海龟速度一样慢的速度加载之后,在所有可能的组合之间混合和切换:Just My Code, Caching symbolsIntellitrace、Just-In-Time、killing processes 等。

我的解决方案实际上是禁用防病毒软件。是的,Windows Defender 正在减慢我的项目启动速度!它会在 Visual Studio 请求时检查所有 dll,并减慢整个符号加载过程。

我不得不说我们的机器具有很好的规格,可以非常快速地编译解决方案,所以这从来都不是问题。我们在 VS 2013 Ultimate 中编写代码。


是的,关闭 Windows Defender 就像一个魅力!要在 Windows 10 中永久关闭 Windows Defender,请在 RegEdit 路径 HKLM\System\CurrentContolSet\Services\WinDefend 中设置 Start="4"(4 表示禁用)
AVG 防病毒软件有问题。有没有人知道是否可以从防病毒软件中排除特定文件夹以解决问题?我已经缓存了符号,并排除了符号缓存文件夹 - 但这没有任何区别。
您可以保留 AV 并从分析中排除某些路径和目标(VS 和您的项目)
D
Dimitri C.

清空符号缓存对我有用。

见:菜单栏/工具/选项/调试/符号/空符号缓存


M
MCS

在 Visual Studio 中:

工具 -> 选项 -> 调试 -> 符号

选择“仅指定的模块”。单击“指定模块”链接,并添加一个空白模块(单击新文档按钮并单击确定)。


T
Transformer

清除缓存等。使用选项 1 和 2;对于设置/故障排除选项 3 和 4,尽情享受吧!

选项 1:导航到 IIS express,清除缓存和站点

cd "C:\Program Files (x86)\IIS Express\"

运行此 appcmd.exe 列表站点 /xml | appcmd 删除站点 /in

运行此 Del /S /F /Q %temp% - 以清除 Userprofile Temp 文件夹。

运行这个 Del /S /F /Q %Windir%\Temp

此外,清除 %temp% 中的临时文件并注销,或重新启动

这将清除 Windows 临时文件夹。这将删除所有网站,享受!

选项 2:删除/重新创建临时文件夹

Cmd> rmdir C:\Users\\{用户名}\AppData\Local\Microsoft\WebsiteCache /s /q

Cmd> rmdir C:\Users\\{用户名}\AppData\Local\Temp /s /q

选项 3JMC(仅我的代码)选项 from MSDN

要在 Visual Studio 中启用或禁用 Just My Code,under Tools > Options (or Debug > Options) > Debugging > General, select or deselect Enable Just My Code

https://i.stack.imgur.com/myJIv.png

选项 4:配置 Visual Studio/禁用常见插件问题

更多Visual Studio settings您还可以配置 Visual Studio 并禁用环境中的资源终止功能,不记得我从哪里得到的,但我很快就会发布更多的三个。

环境 -> 一般

取消选中“根据客户端性能自动调整视觉体验”

取消选中“启用丰富的客户端视觉体验”选中“使用硬件图形加速(如果可用)”环境 -> 自动恢复

取消选中“每次保存自动恢复信息”

环境 -> 文件

选中“无法将数据保存在代码页中时将文档另存为 Unicode”环境 -> 键盘

将“ForceGC”设置为 ctrl+num1

将“ReSharper_Toggle”设置为 ctrl+num0(如果使用了 ReSharper)

将“ReSharper_EnableDaemon”设置为 ctrl+num8(如果使用了 ReSharper)环境 -> 启动

将“启动时”设置为“启动时显示空环境”

取消选中“每次下载内容”环境 -> 同步设置

取消选中“登录到 Visual Studio 时跨设备同步设置”


谢谢,这行得通。还为我解决了 localhost ssl 问题。
R
Roman Pokrovskij

由于未知的 VS 扩展替换了默认的即时调试器,Asp.net 核心调试非常缓慢。

我在 OPTIONS\DEBUGGING\Just-In-Time 配置选项卡中找到了这样的消息(作为警告文本)。另一个调试器已将自己注册为即时调试器。要进行修复,请启用即时调试或运行 Visual Studio 修复。

说明:https://msdn.microsoft.com/en-us/library/ssc8234s.aspx?f=255&MSPPError=-2147217396

返回默认的 JIT 调试器(刚刚选中的未选中的 Managed 选项)解决了我所有的问题。


在 VS2019 社区中为我修复了它(即多年后!) - 非常感谢。有谁知道另一个调试器如何注册自己?这是远程调试的结果吗?
T
Trap

就我而言,我注意到禁用我的互联网连接会使其运行速度与使用 ctrl-f5 一样快,所以我去调试->选项->符号并取消选中所有 .pdb 位置。

似乎 VS 每次启动调试会话时都试图连接到这些服务器。

请注意,禁用 Debug->Options->Debugging->General “启用源支持”或“要求源文件与原始版本完全匹配”不会有任何区别。


+1。我不会推荐它。在这里查看它的含义:stackoverflow.com/questions/8174800/…
G
GaTechThomas

类似的问题浪费了我一半的时间!

由于我的问题的解决方案与此处所说的不同,因此我将其发布,以便对其他人有所帮助。

我的是一个断点。我有一个“Break at function”断点(即,我们不是在代码行上按 F9,而是使用断点窗口创建它们),它应该在我的项目外部的库函数中停止。

我有 “使用 Intellisense 验证函数名称”检查。 (信息 here。)

这比地狱慢(项目启动从 2 秒到 5 分钟)。

删除断点解决了它。


G
GaTechThomas

完成上述所有操作后对我有用的一件事是:在线程窗口(调试->Windows->线程)中,将 Group by 设置为 None。这只能在调试时完成。

即使在关闭该窗口之后,这也会产生影响。


A
Abdul Rauf

在 Windows 资源管理器中打开解决方案文件夹,关闭 Visual Studio,从 Windows 资源管理器中删除 .suo 文件。

现在在 Visual Studio 中打开项目,希望调试器能够快速附加/分离。


e
ewolfman

对我来说,这是条件断点。这些似乎真的让事情变慢了。


他们确实如此。但只有当包含它们的行被实际执行时。
o
ozba

转到您的环境变量并查找键 _NT_SYMBOL_PATH。

删除它。

瞧,工作就像一个魅力。


value == symsrv*symsrv.dll*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols 仍然没有骰子!