简 述: 发现 Win10 的 20H2 的一个 BUG,使用 VS 2013、2015、2017 、2019 的窗口拖曳拆分、合并都会崩溃。

[TOC]


本文初发于 “偕臧的小站“,同步转载于此。


现象

重装系统 win10,使用最新 20H2 + VS 2019,结果发现拖曳 VS 窗口进行合并或拆分时候,放完成松手完成时候, VS 都会崩溃重启,甚是不爽。详细版本如下:

// Win10 版本

版本 Windows 10 专业版 版本号 20H2
安装日期 ‎2021/‎4/‎16 操作系统内部版本 19042.804
体验 Windows Feature Experience Pack 120.2212.551.0

// VS 版本

Visual Studio Professional 2019 版本 16.4.12


痛点

我的电脑 Win10 无法更新系统,VS 2019 虽然可联网更新,但是升级之后,可能项目会编译不过(进退两难)。

无法连接到更新服务。我们将稍后再试,你也可以立即进行检查。如果问题仍然存在,请确保你已连接到 Internet。

​ 很蛋疼的一点是,某种原因,网管把所有电脑把 win10 自动更新的域名断了(一开始还以为是此版本的 BUG,尝试多种方案均链接网络失败)。后灵光一闪,猜是网管掐了。气死了,气死了,气死了,不过电脑不更新了,好像也挺爽。


解决

将就解决方案

又不是不能用,不拖曳窗口就行,不会弄那就这样将就用


临时解决方案

虽然拖曳窗口会崩溃,但可以鼠标右键 “新建垂直文档组”。也达到目的,不过不够优雅


优雅的解决方案

编辑 %InstallRoot%\Common7\IDE\devenv.exe.config%LocalAppData%\Microsoft\VisualStudio\16.0_xxx\devenv.exe.config ,并在AppContextSwitchOverrides 元素的 value 属性的结尾上添加以下代码。(找不到就用 Everything 搜索,修改hi前记得先备份原文件)。

;Switch.System.Windows.Interop.MouseInput.OptOutOfMoveToChromedWindowFix=true;Switch.System.Windows.Interop.MouseInput.DoNotOptOutOfMoveToChromedWindowFix=true

重启 VS 2019,拖曳窗口合并拆分,完美且不会崩溃。


其他解决方案

  • 对于 VS 2013、2015,只需要升级 win10 补丁即可,重启正常。
  • 对于 2019 、只需升级 VS 到最新版本即可(Microsoft 已修复)。
  • 对于 VS 2017,可以试试先升级系统,后升级 VS 。

系列

QtExamples

欢迎 star ⭐ 和 fork 🍴 这个系列的 C++ / QT / DTK 学习,附学习由浅入深的目录,这里你可以学到如何亲自编写这类软件的经验,这是一系列完整的教程,并且永久免费!”