参考文章:

1:http://www.cnblogs.com/hecool/archive/2013/04/06/3002822.html

2: http://www.cnblogs.com/anderslly/archive/2009/05/30/vs-addin-summary.html

在链接地址1中已经讲的很详细,此文章只作为我自己的记录;

首先新建一个项目,首先【其他项目类型】-【扩展性】-【Visual Studio外接程序】然后只勾住在菜单生产按钮操作即可一步到底的让项目新建成功;在菜单命令下生产操作按钮,故名思意是在工具【默认】菜单下生成一个操作的选项;

创建好项目后,其他的不用看,主要是【Connect.cs】和【MyNotePlugIn.AddIn】文件,而我们的【MyNotePlugIn - For Testing.AddIn】只是一个按【F5】键时用来测试部署在{user}\Documents\Visual Studio 201X\Addins下的文件;在第二个链接地址中,已经有很详细的Add-In机制详解;这里只做下简单说明:

1、 OnConnection:在连接VS的时候去DoSomething,在这里也可以指定我们自定义的操作选项挂到VS的哪个菜单上去;
2、 OnStartupComplete:事件仅仅在Add-In随VS启动加载的时候才会触发
3、 OnAddInsUpdate:在某个Add-In被加载或卸载的时候,OnAddInsUpdate事件会触发
4、 OnBeginShutDown:如果在一个Add-In运行的时候关闭VS,OnBeginShutDown事件会触发。我们在这个时候可以做一些必要的清理工作
5、 OnDisconnection:在Add-In的生命周期结束的时候,OnDisconnection事件会触发。它跟OnBeginShutDown事件的不同之处在于,这里结束的是Add-In而不是VS

我们要做什么了?

点击插件真正要做的事情是在Exec这个方法里进行处理的;【链接1中示例】

//获取选择文本对象
TextSelection selectedText = _applicationObject.ActiveDocument.Selection as TextSelection;
string copyInfo = AddInHelper.Read(); //读取版权配置信息
copyInfo = copyInfo.Replace("@time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//替换时间点位符
selectedText.Text = copyInfo; //覆盖选择文本
if(commandName == "MyNotePlugIn.Connect.MyNotePlugIn")
{
handled = true;
return;
}

AddInHelper主要是对AddIn.xml进行配置信息操作;

到此为止直接运行项目,可以将AddIn.xml中的信息加入到指定位置了;

但是如果我们想修改配置信息,咋办?像链接1中的样,在选项中加入自己的可更改配置信息;

So,继续来仿照;

首先加一个用户控件,并且实习接口【IDTToolsOptionsPage】,其他的方法都不用管【方法作用,根据命名即可知】,只用关注两个,OnAfterCreated,OnOK;
OnAfterCreated:加载后,创建时,将xml中的信息读取放到用户控件中的显示框中;
OnOK:点击确定后,我们需要将控件中的信息保存到xml中;
用户控件做好了,需要将它配置到ToolsOptionsPage中;
在MyNotePlugIn.AddIn配置文件中加上如下代码即可;【切记dll的路径和AddIn.xml的路径正确即可】
<ToolsOptionsPage>
<Category Name="Free插件">
<SubCategory Name="版权模板">
<Assembly>MyNotePlugIn.dll</Assembly>
<FullClassName>MyNotePlugIn.NoteConfig</FullClassName>
</SubCategory>
</Category>
</ToolsOptionsPage>
到现在基本完事,如果想把这个插件发给别人用,只用将Dll,AddIn.xml, MyNotePlugIn.AddIn三个文件放到{user}\Documents\Visual Studio 201X\Addins下面即可以了;当然你得重启VS;
源码链接1,详解链接2;操作看本文;

VS20XX-Add-In插件开发的更多相关文章

  1. Add In 简介(主要翻译于ESRI官方文档)

    为ArcGIS桌面端建立Add In插件 平时以工作为主,有空时翻译一些文档,顺便练习英文,这个是因为用Add In来学习一下. 主要包括: 关于Add In 什么时候使用Add In Python ...

  2. ArcMap插件开发初识:Add In

    之前一直在做ArcEngine的相关开发,做的winform相关,新换了工作,又开始新的学习旅程! Add In 这个东西很早就知道有,但是一直没有用过,因为之前的公司有自己框架,接口,虽然我也是做插 ...

  3. JavaScript学习笔记(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  4. jira的插件开发流程实践

    怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...

  5. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

  6. JavaScript学习总结(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  7. Eclipse ndk fix插件开发

    一. 手工修复ndk环境bug Eclipse做ndk开发的时候, 经常会遇到编译过去,却报语法错误的问题,比如 ①. 头文件不识别 ②. 头文件识别了, 类型不识别 针对这一的bug,我们一般按照如 ...

  8. jquery插件开发

    jQuery是一个封装的很好的类,比如我们用语句$("#btn1") 会生成一个 jQuery类的实例. 一.jQuery插件开发注意要点 1.使用闭包,避免全局依赖,避免第三方破 ...

  9. 跟我一起学JQuery插件开发

    http://www.cnblogs.com/Leo_wl/archive/2012/04/06/2435511.html 以前一直比较好奇,jquery插件是怎么开发的,怎么写属于自己的插件? 昨天 ...

  10. jQuery插件开发(转)

    jQuery插件开发全解析 jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命 ...

随机推荐

  1. SqlServer发送邮件,定时作业

    今天偶然研究了一下sqlserver发送邮件的功能,之前听说过可以发,但是一直没尝试过,只是用C#写后台程序的方式来发邮件. 现在又多了一种发送邮件的途径. 大致的步骤如下: 1.配置sqlserve ...

  2. 2014辛星完全解读html第五节

    员,那么肯定会知道什么叫表单,这里我们就介绍一下前台怎样使用表单.表单的使用也是我们编写网页的必须经历的一关.并且,表单也往往是我们站点的漏洞和弱点出现的地方. *************表单**** ...

  3. Sharepoint 2013 左右&quot;SPChange&quot;一个简短的引论

    于SharePoint于,我们经常需要获得这些更改项目,竟api为我们提供SPChange物.下列,在通过我们的目录资料这一目标. 1.创建测试列表,名字叫做"SPChangeItems&q ...

  4. 组态ORACLE 11G ADG

    一旦载10g的,没有票据.昨天使用duplicate方法一安装11g ADG,过程艰辛,记录: 一.环境配置 主图书馆 IP地址:192.168.233.128/24 操作系统版本号:rhel5.8 ...

  5. C#操作Xml:通过XmlDocument读写Xml文档

    什么是Xml? Xml是扩展标记语言的简写,是一种开发的文本格式.关于它的更多情况可以通过w3组织了解http://www.w3.org/TR/1998/REC-xml-19980210.如果你不知道 ...

  6. linux_java_redis_postgresql_常用命令

     redis 常用语法telnet 192.168.18.210 6379keys *llen队列名称llen 队列名称 postgresql常用语法psql -h192.168.18.210 -Up ...

  7. 【MySQL案件】mysql登录-S失败

    1.1.1. mysql登录mysql时间,-S参数失效 [环境的叙述性说明] mysql5.5.14 [问题叙述性说明] 配置多个实例 实例1 实例2 datadir /home/mysql_330 ...

  8. VTune使用amplxe-cl进行Hardware Event-based Sampling Analysis 0分析

    于BASH正在使用VTune进行Hardware Event-based Sampling Analysis 0分析: 结果(部分)例如以下: 版权声明:本文博客原创文章.博客,未经同意,不得转载.

  9. HDU 2544-最短路(最短路spfa)

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  10. Java初认识--环境搭建及基本数据类型

    一.JAVA语言的环境搭建 1.JRE(Java Runtime Environment):Java运行环境. 它包括Java虚拟机和Java程序所需的核心类库等. 2.JDK(Java Develo ...