Visual Studio 2017编辑JavaScript/CSHTML文件卡顿问题求助
我在社区论坛和Stack Overflow上看到不少用户都碰到过你这个糟心的问题——VS2017 15.7.1版本编辑JavaScript文件,或者在CSHTML里写JS代码片段时,突然卡顿假死,弹出“忙碌中”提示,要等5-10分钟才能恢复,而且还反复出现,赶截止期限的时候真的急得跳脚。你已经定位到VS自带的32位Node.js进程,这个判断完全正确,下面给你几个经过用户验证的靠谱解决办法:
替换VS自带的Node.js版本
这个版本VS内置的32位Node.js(就是你找到的G:\Program\Microsoft Visual Studio\2017\Enterprise\Web\External\x86路径下的)存在兼容性问题,是导致卡顿的核心原因之一。你可以把它换成本地安装的64位稳定版Node.js:- 先确保你本地已经装了最新的64位Node.js稳定版
- 找到VS自带Node的目录,把里面的
node.exe重命名为node_old.exe(留作备份) - 把本地64位Node安装目录里的
node.exe复制到VS的这个x86目录下
替换后VS会调用新的Node进程,大部分用户反馈这个方法能彻底解决卡顿问题。
临时禁用JavaScript语言服务
如果替换Node暂时没效果,赶进度的时候可以先关闭VS的JS语言服务——它后台的代码分析有时候会过度占用资源:- 打开VS,点顶部菜单栏的
工具→选项 - 依次展开
文本编辑器→JavaScript/TypeScript→语言服务 - 取消勾选
启用JavaScript语言服务,确定后重启VS
这个方法会失去JS的智能提示和语法检查,但能立刻解决卡顿,适合紧急赶工的时候用。
- 打开VS,点顶部菜单栏的
修复或升级Visual Studio
15.7.1版本确实有不少已知的性能bug,你可以先尝试修复VS:- 打开Visual Studio Installer,找到你的2017 Enterprise实例
- 点击
修改→修复,等修复完成后重启VS
如果修复没用,建议升级到VS2017的最新补丁版本(比如15.9.x),这个版本修复了大量JS相关的性能问题,不过升级前记得备份好你的项目文件。
快速终止卡顿Node进程的批处理
要是你暂时没时间做上面的操作,可以做个批处理文件一键结束那个捣乱的Node进程:
新建一个.bat文件,写入以下内容:taskkill /F /IM node.exe /FI "IMAGEPATH eq G:\Program\Microsoft Visual Studio\2017\Enterprise\Web\External\x86\node.exe"保存后,每次卡顿的时候双击运行,就能快速结束对应的进程,不用手动去任务管理器里找。
这些方法都是社区里用户亲测有效的,你可以根据自己的情况选择,优先试试替换Node版本或者修复VS,这样能保留VS的JS语言服务功能,不影响日常开发。
内容的提问来源于stack exchange,提问作者Masoud Andalibi

