参考文章:

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. 开展project 正常的生活之路

    相对刚走出学校的学生在其他行业工作,竞争力的薪酬,同时.并不断地不仅学习更新专业知识让你感到生活的充实,更满足了你那不让外人知的虚荣心.在刚出校门的几年中,你常常回头看看被你落在后面的同学们,在内心怜 ...

  2. java 中间String分类

    String a = "aaa"; 用这样的方式的时候java首先在内存中寻找"aaa"字符串.假设有.就把aaa的地址给它 假设没有则创建 String a ...

  3. 2.cocos2dx 3.2在语法的差异,lambada使用表达式和function和bind使用功能

    1        打开 - 内置T32  Cocos2dx-3.2一个专案 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhb ...

  4. A + B Again 2057 有符号的64进位的运算

    Problem Description There must be many A + B problems in our HDOJ , now a new one is coming.Give you ...

  5. ClassLoader—流程观察程序执行类加载-verbose:class

    当调试器,有时你需要看到程序加载的类.记忆的恢复情况.本地接口调用,等等..这时候就需要-verbose命令. 在myeclipse能够通过右键设置(例如以下).也能够在命令行输入java -verb ...

  6. Codeforces 328B-Sheldon and Ice Pieces(馋)

    B. Sheldon and Ice Pieces time limit per test 1 second memory limit per test 256 megabytes input sta ...

  7. JDBC连接池的简单实现

    首先解释一下,我在做自己android发育.java web这是我的弱点,就在最近,京东云免费,因此,要折腾几.有一点经验,特别是作为共享. 假设内容的文章是错,还请高手指正. 我在这里web结束,需 ...

  8. Php设计模式(三):行为型模式part2

    原文详见:http://www.ucai.cn/blogdetail/7023?mid=1&f=5 可以在线运行查看效果哦! <接上文> 5.中介者模式(Mediator) : 用 ...

  9. IOS开发中绘制地图线路

    地图应用经常会涉及到线路的绘制问题,ios下可以使用MKMapView进行地图开发,使用 MKOverlayView进行线路的绘制. 使用MKMapView添加MKMap.framework 和Cor ...

  10. gpu显存(全局内存)在使用时数据对齐的问题

    全局存储器,即普通的显存,整个网格中的随意线程都能读写全局存储器的任何位置. 存取延时为400-600 clock cycles  很easy成为性能瓶颈. 訪问显存时,读取和存储必须对齐,宽度为4B ...