VS 文件查找器






4.90/5 (34投票s)
2004年3月12日
3分钟阅读

243220

3308
一个 Visual Studio 插件,帮助您在大型项目中进行导航。
引言
VS File Finder 是一个 Visual Studio .NET 2003 插件,可以帮助您在大型项目中快速查找文件。它使用 C++ 编写,可以列出 Visual Studio 支持的所有项目类型的文件。
安装后,您将在 IDE 中看到一个新窗口,列出当前解决方案中的所有文件。通过键入文件名中任何部分的几个字母,您可以快速将列表缩小到几个文件,然后打开您感兴趣的文件。
在大型项目中,这比解决方案资源管理器或文件打开对话框更有用,因为文件可能分布在许多文件夹中,而您可能只记得文件名的一部分。
提供了根据文件名高亮显示或排除文件的选项,因此您可以快速找到所需的文件。
要求
该插件应该能很好地处理 Visual Studio .NET 支持的任何语言编写的项目。我已经用 C++、C# 和 VB.NET 项目测试过该插件。
该插件适用于 Visual Studio .NET 2003(版本 7.1)。它不适用于 Visual Studio .NET 2002、Visual Studio .NET 2005 beta 或任何早期版本的 Visual Studio。添加对 VS2002 或 VS2005 的支持可能很简单,只需更改注册代码,将插件列为支持这些版本,或者可能需要一些代码更改(我无法访问这两个版本,所以无法确定)。
背景
该插件使用 Visual Studio .NET 自动化接口来查找项目中的文件并显示其窗口。
花了很长时间才找到一种既快速又可靠的文件列表构建方法。我开始使用一个版本来构建文件列表,然后尝试使用解决方案事件在项目更改时更新列表。这种方法效果不太好,因为某些操作(例如加载解决方案)可能会触发大量事件,而某些操作则不会生成事件或发送过于通用的事件,无法确定它们对文件列表的影响。我尝试添加越来越多的事件处理程序,但这种方法似乎注定要失败。
我现在使用的方法是在每次事件发生时重新构建文件列表。为了保持快速运行,我将实际的文件列表构建推迟几百毫秒,这样多个事件就可以合并成一次重建。该插件还使用虚拟列表控件来减少列表更改时的闪烁量。
即使对于大型解决方案,这种方法似乎也效果很好(我通常在拥有两三千个文件的项目上使用它,没有任何问题)。
使用代码
这个项目中有一些代码可能对其他项目有用。 SolutionExplorer.cpp/.h 为需要以访问者模式遍历解决方案中文件的类提供了基类,并隐藏了许多繁琐的细节。
代码还包含一些有用的辅助类,用于处理 Visual Studio 事件,并包含一些用于显示和排序虚拟列表控件的代码。
关注点
该解决方案实际上是通过两个项目构建的,一个是 Visual Studio Add-in,另一个是 ActiveX 控件。在 Visual Studio 中托管使用 MFC 构建的 ActiveX 控件似乎存在一个奇怪的问题。控件会获得一个不应存在的额外边框。这在简单的 AppWizard 创建的代码中也会发生,所以我怀疑这是 MFC 的一个 bug。我能找到的唯一解决方案是在 CVSFileFinderCtrl::OnActivateInPlace
中调用 DestroyTracker
。这解决了问题,但我很想知道为什么需要这样做。
历史
- 2004 年 3 月 12 日 - 发布 1.0 版
- 2004 年 4 月 5 日 - 发布 2.0 版
- 修复了 C# 和 VB 项目中的问题
- 添加了选项和关于对话框
- 添加了排除过滤器
- 添加了高亮过滤器
- 添加了在退出时保存列宽度的代码