You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何延长Visual Studio 2017的无响应允许时长?

解决VS2017处理超大OData生成文件无响应的问题

哥们儿,我之前开发D365集成应用时,也被OData生成的几十万行大文件坑过VS无响应的情况,给你分享几个实用的方案——先从你问的「增加无响应允许时长」说起,再给你几个更根本的解决办法:

一、调整VS无响应超时时长

VS的调试器和编辑器有内置的超时阈值,你可以通过注册表修改这个值:

  • 打开注册表编辑器(regedit),定位到路径:
    HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\15.0_<你的VS实例ID>\Debugger

    小贴士:VS实例ID可以在VS的「帮助」→「关于 Microsoft Visual Studio」里找到,格式类似15.0_abc123def

  • 在该路径下新建一个DWORD(32位)值,命名为WaitForExpressionEvaluationTimeout
  • 设置值为你想要的超时毫秒数,比如默认是5000(5秒),可以改成30000(30秒)甚至更长,记得选择「十进制」格式

二、从根源缓解大文件带来的压力

调时长只是应急,更有效的是减少VS对这个超大文件的处理负担:

1. 让调试自动跳过生成文件

你可以给生成的OData类添加[DebuggerStepThrough]特性,这样调试时不会误单步进入:

  • 如果是用OData V4 Client Generator生成的,在生成设置里找「生成DebuggerStepThrough特性」的选项(一般在「高级」设置里),勾选它,下次生成的代码就会自动带上这个特性
  • 如果找不到这个选项,也可以手动在生成文件的类上添加,但注意每次重新生成文件后需要重新加,所以优先改生成模板或扩展设置

2. 拆分超大生成文件

OData V4 Client Generator支持将单个大文件拆分成多个小文件,这是解决问题的关键:

  • 在生成客户端代码的配置窗口(右键项目→添加→连接的服务→OData Client),找到「拆分文件」相关选项,勾选后生成的代码会按实体、操作等拆分成多个独立文件,每个文件几千到几万行,VS处理起来就顺畅多了

3. 优化VS的智能感知和分析

  • 打开VS的「工具」→「选项」→「文本编辑器」→「C#」→「高级」,取消勾选「启用完整的解决方案分析」,减少VS对大文件的实时分析压力
  • 右键超大生成文件→「属性」,保持「生成操作」为「编译」(因为需要用到这些类),但把「复制到输出目录」改成「不复制」,减少不必要的IO操作

4. 升级VS版本

VS2017 15.5.6是比较老的版本了,后续的VS2017更新版本(比如15.9.x)以及VS2019/2022对大文件的处理性能有明显优化,如果你能升级的话,大概率能直接解决无响应的问题


内容的提问来源于stack exchange,提问作者StarNamer

火山引擎 最新活动