在 'Edit' 和 'Debugging' 布局更改期间处理 VSIX 工具窗口可见性事件

Handling VSIX Toolwindow visibility events during 'Edit' and 'Debugging' layout changes

我有一个实现 IVsWindowFrameNotify3 的 Visual Studio 工具window,我可以成功跟踪 Window 在 'normal window operations' 通过用户交互。

然而,当我 运行 一个加载的项目时,工具 Window 被关闭(隐藏)并且 IVsWindowFrameNotify3 方法的 none 被提升。

我想防止我的工具window在调试时被关闭。

我应该监听哪些事件可以让我在 Visual Studio 未退出时覆盖 window 关闭?

** 更新 **

在某种程度上,这个问题是错误的,并且表明我对 Visual Studio 的工作原理缺乏理解。

Visual Studio 使用 'layouts',它根据 Visual Studio 模式的不同而变化 运行ning。所以,实际上,我看到的是'Editing' 布局和 'Debugging' 布局,其中扩展在编辑模式下显示,但在调试模式下未显示。

因此在某种程度上,是否应该隐藏它不取决于我的分机,而是用户的选择。

所以,问题应该是'How do I listen to when Visual Studio changes the layout mode before raising events with my extension'。

这可能会成为我的扩展的一个重要问题,因为它应该在调试期间释放资源,因此在它因布局更改而关闭时需要侦听事件。 (如果用户选择在调试布局中打开扩展程序,那很好)。

由于结对编程在 Discord 上发挥了最佳作用,我们两个人设计了 'better' 解决此问题的方法。

起初我们尝试绑定到 Windows Forms Control VisibleChanged 事件(因为我们感兴趣的组件嵌入在 WindowsFormHost WPF 控件中)。效果不是很好。

但是,绑定到 WPF 控件的 IsVisibleChanged 更改按您预期的方式工作。

所以答案是,不要在所有情况下都依赖 Visual Studio 通知!