Visual Studio 自动化:在加载解决方案时枚举打开的窗口

Posted

技术标签:

【中文标题】Visual Studio 自动化:在加载解决方案时枚举打开的窗口【英文标题】:Visual studio automation: Enumerate opened windows upon solution loading 【发布时间】:2010-09-08 12:30:08 【问题描述】:

如何在使用宏加载解决方案时枚举打开的代码窗口(即编辑文档的窗口)?

您可能知道,MSVS 会记住打开的文档,即当您加载解决方案时,IDE 会加载以前打开的文件。我想要做的是在解决方案加载时对这些窗口执行一些操作。

我尝试在 SolutionEvents_Opened 处理程序中访问这些窗口。但是没有运气 - 似乎在调用 SolutionEvents_Opened 时提到的窗口不可用。 DTE.Documents 为空且 DTE.Windows.Items 不包含它们。

我需要一些代码,例如:

Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
   Dim window As Window = DTE.Documents.Item(?).Windows // one of the opened windows
   ...
End Sub

【问题讨论】:

【参考方案1】:

我发现枚举窗口的一种方法是在 DocumentEvents.DocumentOpened 事件上,但它总是会触发它,而不仅仅是在加载解决方案期间。根据我的经验,SolutionEvents.Opened 似乎根本没有被触发,否则可能会在其中更改静态变量。

This 可能有助于解释它。

【讨论】:

以上是关于Visual Studio 自动化:在加载解决方案时枚举打开的窗口的主要内容,如果未能解决你的问题,请参考以下文章

解决 Visual Studio 符号加载不完全问题

Visual Studio2005问题:未能正确加载包“Visual Studio Macros Package”

Visual Studio 如何加载库?

Visual Studio加载符号过慢问题解决

Visual Studio 2008 输出 - 隐藏 dll 加载和卸载

Visual Studio 2010 - 如何加快大型解决方案的加载速度?