现在的位置: 首页 > 综合 > 正文

VS2005查找替换插件

2011年07月10日 ⁄ 综合 ⁄ 共 989字 ⁄ 字号 评论关闭

    或许您也跟我一样,曾经遇到过VS2005的这样一个BUG——集成环境的查找替换功能不能使用的情况。那么,怎么解决这个问题呢?方法有三个:(1)升级VS2005到SP1;(2)不再使用其查找替换功能;(3)制作一个自己的查找替换插件。
(注:插件在Visual Studio中称为外接程序,本文为方便起见,仍然称之为插件,两者含义相同。)
    如果要下载本插件的执行程序,请点击这里
    如果要下载本插件的源代码,请点击这里
    如果要了解本插件的制作过程,请继续往下看。
    下面试图讲述如何制作一个自己的查找替换插件,其实很简单。
    1.新建一个Visual Studio外接程序;

    2.以下进入向导部分,在向导的第4步,选择图中所示的两个选项,其它步骤都用默认设置,直到完成向导;这样,向导已经为我们生成了一个可用,但是没有任何功能的插件,我们只要改造它,增加自己的功能便可以了。

    3.在我的电脑中,向导生成的代码有一个小小的BUG,我们一起来看看:
    3.1 在Connect.cs的第46行附近设置断点,如图3所示;

    3.2 调试本插件,我们会发现变量resourceName的值为"zhTools",它是VS2005编辑器“工具”菜单的资源名;
    3.4 如果继续执行我们会发现toolsMenuName的值为空,也就是说,无法在资源文件中得到“工具”菜单的值;在后面也得不到“工具”菜单对象,插件会加载失败;
    4.为了解决这个BUG,请打开资源文件“CommandBar.resx”,添加一项名为“zhTools”的字符串,将值设置为“工具”;

    5.一切准备就绪之后,我们重点来看看怎么实现查找替换:
    5.1 在命名空间EnvDTE中实现了Find接口,已经封装好了具体的查找替换功能,我们只需要设置属性,然后调用Find.Execute方法即可;
    5.2 制作一个窗口,用来进行查找替换的参数设置,在此略过;
    6.插件的执行部分在方法Exec中,我们自己的执行过程就放到这里面,例如:
    FormFindReplace frmFindReplace = new FormFindReplace(_applicationObject);
    frmFindReplace.Show();

    非常感谢您能看完本文,希望对您有些许帮助,谢谢。

抱歉!评论已关闭.