Visual Studio 2015 隔离 Shell 应用程序在更新到 MS KB4601050 后对接工具 window 时崩溃

Visual Studio 2015 Isolated Shell application crashing when docking Tool window after update to MS KB4601050

我们有一个使用 .NET 4.8 和 Visual Studio 2015 Shell(已隔离)开发的应用程序。更新到 KB4601050 后,只要停靠工具 window,此应用程序就会崩溃。

我已尝试按照知识库文章中的指示将开关添加到 app.config 文件,但没有任何效果。

<configuration>
   <runtime>
      <AppContextSwitchOverrides value="Switch.System.Windows.Interop.MouseInput.OptOutOfMoveToChromedWindowFix=true; Switch.System.Windows.Interop.MouseInput.DoNotOptOutOfMoveToChromedWindowFix=true" />
   </runtime>
</configuration>

我有什么选择可以补救这种情况?

申请:xxxxx.exe 框架版本:v4.0.30319 说明:进程因未处理的异常而终止。 异常信息:System.NullReferenceException 在 System.Windows.Interop.HwndMouseInputProvider.HasCustomChrome(System.Windows.Interop.HwndSource, RECT ByRef) 在 System.Windows.Interop.HwndMouseInputProvider.GetEffectiveClientRect(IntPtr) 在 System.Windows.Interop.HwndMouseInputProvider.PossiblyDeactivate(IntPtr,布尔值) 在 System.Windows.Interop.HwndMouseInputProvider.Dispose() 在 System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr, MS.Internal.Interop.WindowMessage, IntPtr, IntPtr, Boolean ByRef) 在 System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr、Int32、IntPtr、IntPtr、Boolean ByRef) 在 MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) 在 System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) 在 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)

虽然我无法通过将开关添加到 app.config 文件来解决问题,但将它们添加到注册表解决了问题。但是,请注意文章 https://docs.microsoft.com/en-us/dotnet/api/system.appcontext?view=netcore-3.1#remarks 中指示的注册表路径缺少 Microsoft 和 .NETFramework 之间的斜杠。

我在使用 Visual Studio 2012 Express 时遇到了同样的问题。 我将您的 <AppContextSwitchOverrides>-Tag 添加到 WDExpress.exe.config 中的 <runtime>-部分(而不是 app.config,因为没有) 在 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE

它就像一个魅力。