VS20XX-Add-In插件开发
参考文章:
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;操作看本文;
作者: RegicideGod
出处:https://www.cnblogs.com/RegicideGod/p/3147492.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?