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

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

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

首先看一下界面

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

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

第一步 创建解决方案

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

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

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

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

  如图

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

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

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

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

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

  下一步,完成

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

第三步 创建一个窗口

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

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

/// <summary>
/// application对象
/// </summary>
private DTE2 _applicationObject; /// <summary>
///
/// </summary>
public DTE2 applicationObject
{
get { return _applicationObject; }
set { this._applicationObject = value; }
}

  

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

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

  

/// <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,在工具菜单中会多出一个我们自己外接程序的菜单

  

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

  

  至于其他操作,就可以在这个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\目录中即可,如图:

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

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

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

(转) VS2010 Addins 外接程序(插件)开发的更多相关文章

  1. 微信小程序插件 - 开发教程

    昨天(2018.3.13),微信小程序发布了重大功能更新,支持插件的使用和开发,个人预计,不超过2个月,优质服务的插件将会如雨后春笋般涌现. 这篇文章,我将会带大家,从0开始,学习如何开发和使用插件. ...

  2. 【转】.Net中通过反射技术的应用----插件程序的开发入门

    转自:http://www.cnblogs.com/winloa/archive/2012/03/25/2416355.html .Net中通过反射技术的应用----插件程序的开发入门 再开始之前,先 ...

  3. 使用 Visual C# .NET 生成 Office COM 外接程序

    Microsoft Office XP 和 Microsoft Office 2003 都支持一种新的统一的设计结构,这种结构用于生成应用程序外接程序以增强和控制 Office 应用程序.这些外接程序 ...

  4. 【VS外接程序】利用T4模板生成模块代码

    引言 记得第一次做asp.net mvc项目时,可以用model直接生成Html的增删改查页面, 没什么特殊要求都可以不用修改直接用了, 觉得很神奇,效率太高了.后来在做客户端开发时,发现很多模块都是 ...

  5. VS2012外接程序VMDebugger未能加载或导致了异常

    转http://blog.csdn.net/maryhuan/article/details/42676915 故障现象:打开Visual Studio 2010后弹出错误框,外接程序VMDebugg ...

  6. VS2010与QT的集成开发环境

    http://blog.csdn.net/hbsong75/article/details/9293773 QT与Java有点类似,也是一种跨平台的软件(当然在windows平台和Linux平台需要安 ...

  7. Web程序员开发App系列 - 开发我的第一个App,源码下载

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  8. Web程序员开发App系列 - 认识HBuilder

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  9. 【推荐】开源项目minapp-重新定义微信小程序的开发

    minapp 重新定义微信小程序的开发 官网:https://qiu8310.github.io/minapp/ 作者:Mora minapp 重新定义微信小程序的开发 使用 用 npm 安装命令行工 ...

随机推荐

  1. Javascript-关于null、undefined、空字符串的区分

    一.分别判断 var a=null; //var a=undefined; //var a=''; //var a='DD'; if(!a&&typeof a == 'object') ...

  2. VMware网络桥接模式与NAT模式共存

      对虚拟机有时我们会有一种需求,即需要虚拟机可以作为单独的主机拥有自己的独立IP,也希望宿主机可以通过NAT模式映射端口到虚拟机. 那么此时怎么办那,其实很简单,虚拟机是支持多网卡设置的,只要在虚拟 ...

  3. 关于{get;set;}访问器

    /// <summary> /// 此视频更新时间/创建时间 [生成时间,不手填] /// </summary> public System.String CreateTime ...

  4. uva-10085-搜索-最远状态的八数码

    直接bfs即可,取最后一个状态 #include <iostream> #include <stdio.h> #include <string> #include ...

  5. pythoner国内比较快 的 镜像源

    pythoner国内比较快 的  镜像源 pip install pyqt5 = 5.9 -i https://pipy pip使用过程中的痛苦,大家相必都已经知道了,目前豆瓣提供了国内的pypi源, ...

  6. 《算法》第六章部分程序 part 6

    ▶ 书中第六章部分程序,包括在加上自己补充的代码,包括二分图最大匹配(最小顶点覆盖)的交替路径算法和 HopcroftKarp 算法 ● 二分图最大匹配(最小顶点覆盖)的交替路径算法 package ...

  7. ubuntu 14.04 安装 Apache Thrift 0.10

    1.到官网下载源码压缩文件 https://thrift.apache.org/download 2.安装依赖软件,可以参考 https://thrift.apache.org/docs/instal ...

  8. spring 之 init-method & InitializingBean

     init-method  是bean (第一次)实例化的时候被调用的. 先看个异常: INFO: Overriding bean definition ; dependencyCheck=; aut ...

  9. GPUImage中饱和度调整的实现——GPUImageSaturationFilter

    饱和度saturation,是指色彩的鲜艳程度,也称色彩的纯度.饱和度取决于该色中含色成分和消色成分(灰色)的比例.含色成分越大,饱和度越大:消色成分越大,饱和度越小.纯的颜色都是高度饱和的,如鲜红, ...

  10. GPUImage中对比度调整的实现——GPUImageContrastFilter

    对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,差异范围越大代表对比越大,图像越鲜亮,差异范围越小代表对比越小,图像越灰. GPUImage中实现了对比度调整的Filter,其 ...