(转) VS2010 Addins 外接程序(插件)开发

http://www.cnblogs.com/Leo_wl/archive/2013/03/21/2973886.html

 

 

VS2010 Addins 外接程序(插件)开发

简单做了一个添加文件头注视的插件,算作是学习。

 

首先看一下界面(转) VS2010 Addins 外接程序(插件)开发

外接程序是在 Visual Studio 集成开发环境 (IDE) 中运行的已编译的 DLL。 编译可以保护知识产权和提高性能。 虽然可以手动创建外接程序,但使用“外接程序向导”更为简便。 此向导创建一个功能全面但却很基本的外接程序,创建完该程序后可立即运行它。 “外接程序向导”生成基本的空程序后,可向其添加代码并对其进行自定义。

“外接程序向导”让您可以为外接程序提供显示名称和说明。 这两项内容都将出现在“外接程序管理器”中。 还可以选择让向导生成代码,用于向“工具”菜单中添加可打开外接程序的命令。您也可以选择为外接程序显示一个自定义“关于”对话框。 向导完成时,将生成只有一个类的新项目(名为 Connect),该项目实现外接程序。

第一步 创建解决方案

  这里使用的是VS2010 、C#、WinForm

  文件→新建→项目→其他项目类型→扩展性→Visual Studio 外接程序,修改名称、位置、解决方案名称等信息,点击确定

(转) VS2010 Addins 外接程序(插件)开发

 

第二步 根据外接程序想道创建项目

  当然,你如果已经是高手了,可以不用使用向导创建 项目。

  如图(转) VS2010 Addins 外接程序(插件)开发

  下一步,选择使用C#创建外接程序

  下一步,选择使用应用程序主机,有两个选项,Microsoft Visual Studio 2010 和Microsoft Visual Studio 2010 Macros(宏),两个都勾选

  下一步,填写外界程序名称和说明

  下一步,在选择外接程序选项中,在“是否为外接程序创建命令栏用户界面?”中勾选“是的,创建工具菜单项“,向导会为你在工具菜单中创建一个菜单

  下一步,关于信息,根据需要勾选是否生成关于对话框

  下一步,完成

  这样系统向导就为你创建了一个项目,并且生成了一个Connect类,实现IDTExtensibility2和IDTCommandTarget接口

第三步 创建一个窗口

  在项目上,右键,添加一个WinForm窗口,我在这里命名为MainForm

第四步 在MainForm类中添加application对象  

(转) VS2010 Addins 外接程序(插件)开发
(转) VS2010 Addins 外接程序(插件)开发
/// <summary>
        /// application对象
        /// </summary>
        private DTE2 _applicationObject;

        /// <summary>
        /// 
        /// </summary>
        public DTE2 applicationObject 
        {
            get { return _applicationObject; }
            set { this._applicationObject = value; }
        }
(转) VS2010 Addins 外接程序(插件)开发
(转) VS2010 Addins 外接程序(插件)开发

 

  

第五步 显示这个创建的窗口

  在Connect类中找到public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)这个方法  

  

(转) VS2010 Addins 外接程序(插件)开发
(转) VS2010 Addins 外接程序(插件)开发
/// <summary>实现 IDTCommandTarget 接口的 Exec 方法。此方法在调用该命令时调用。</summary>
        /// <param term='commandName'>要执行的命令的名称。</param>
        /// <param term='executeOption'>描述该命令应如何运行。</param>
        /// <param term='varIn'>从调用方传递到命令处理程序的参数。</param>
        /// <param term='varOut'>从命令处理程序传递到调用方的参数。</param>
        /// <param term='handled'>通知调用方此命令是否已被处理。</param>
        /// <seealso class='Exec' />
        public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
        {
            handled = false;
            if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if(commandName == "MyHeadeAddin.Connect.MyHeadeAddin")
                {
                    //此处添加自己的逻辑代码
                    MainForm mainF = new MainForm();
                    mainF.applicationObject = _applicationObject;
                    mainF.Show();

                    handled = true;
                    return;
                }
            }
        }
(转) VS2010 Addins 外接程序(插件)开发
(转) VS2010 Addins 外接程序(插件)开发

 

第六步 运行调试

  运行后会打开一个新的VS2010,在工具菜单中会多出一个我们自己外接程序的菜单

  (转) VS2010 Addins 外接程序(插件)开发

  点击这个按钮,我们创建的窗口就会弹出来了!

  (转) VS2010 Addins 外接程序(插件)开发

 

  至于其他操作,就可以在这个MainForm的基础上进行了。

  对VS2010 IDE的一些操作主要围绕DTE2的applicationObject实例对象来进行。

 DTE2的命名空间是EnvDTE80。

 

 

 

  关于EnvDTE的说明http://technet.microsoft.com/zh-cn/envdte(it-it).aspx

 

 

 
  EnvDTE 是包含 Visual Studio 内核自动化的对象和成员的用程序集包装的 COM 库。 

在 EnvDTE80、EnvDTE90、 EnvDTE90a 和 EnvDTE100 命名空间中包含更改和新功能。添加对 EnvDTE.dll 的程序集引用时,您还必须将程序集的 “嵌入互操作类型”属性设置为 false。

最后,如果要在其他计算机上使用,只需要将.AddIn和生成的.dll文件放到 文档目录下的\Visual Studio 2010\Addins\目录中即可,如图:

(转) VS2010 Addins 外接程序(插件)开发

  第一次接触插件开发,还是从我的一个师哥那接触的。

  插件下载地址:http://files.cnblogs.com/zsmhhfy/HeadAddins.rar

  另外参考:http://technet.microsoft.com/zh-cn/magazine/80493a3w.aspx