VS2022代码后台重命名与建议卡顿问题排查及原因定位
VS2022 代码重构与智能提示卡顿问题排查记录
问题现象
- 纯净版无扩展的VS2022(默认设置),同一解决方案下两个项目表现差异极大:第一个规模更大的项目操作全即时响应,第二个小项目卡顿严重
- 即使在全新空命名空间的类构造函数里重命名变量,耗时约10秒;计算单个文件的1处引用耗时近20秒
- F2重命名时,「查找要重命名的标记」阶段需数秒;Ctrl+.加载/应用智能提示(如添加using命名空间)耗时10秒
- Shift+F12查找所有引用可即时完成,但F12跳转至定义耗时久
- XAML设计器中Ctrl+.添加命名空间即时生效,但代码后台新增
event="button_click"需10秒 - 已尝试禁用实验/预览选项、注释复杂代码,均无法解决
排查步骤
- 忽略编译错误,将项目中除测试类外的所有文件排除,测试重命名耗时从20秒降至0秒
- 逐个添加排除的文件,定位到问题出在View类上
- 逐步注释View类构造函数内容,最终锁定
this.WhenActivated(d =>{})中的Events()方法(如lblTagsCheck.Events().PreviewMouseDown.Do((a) =>{})) - 恢复项目所有文件,仅注释
Events()语法后,卡顿完全消失(仅代码报错)
根源定位
卡顿由Reactive UI的Events()方法导致:
- 替换项目中所有
Events()调用后,IDE重构操作立即恢复流畅 - 卡顿程度与View构造函数中
Events()的使用数量正相关
遗留疑问
为何一个无任何外部引用的独立类,会受项目中其他类构造函数里的Events()影响?目前仍在针对Events()做进一步排查
内容的提问来源于stack exchange,提问作者Libor
相关产品推荐
相关产品推荐

