VS2013插件开发
一、功能描述
项目中有一个AppSettings.xml文件,当这个文件有添加新元素的时候,将该添加的内容自动同步到其他目录下的AppSettings.xml文件。
二、插件模板选择
要开发VS插件需要安装SDK,安装后在添加新项目->Visal C#->扩展性下选择要使用的插件模板,由于本功能是跟文本编辑有关的,所以选择Editor Text Adornment模板,也可以选择其他的模板进行开发。下面是两个插件的示例:Visual Studio Text Editor Extension和Building and publishing an extension for Visual Studio 2010
三、如何监控编辑窗口的保存事件
可以通过ServiceProvider.GlobalProvider.GetService(Type type)方法来获取DTE对象,要获取该对象需要添加EnvDTE和Microsoft.VisualStudio.Shell.12.0程序集,这两个程序集在【扩展】项里,引用Microsoft.VisualStudio.Shell.12.0程序集的时候还需要添加该程序集依赖的其他程序集,编译的时候可以知道需要添加哪些程序集。获取DTE对象后可以订阅DocumentEvemts对象的DocumentSaved事件。注意:要将DTE、Events、DocumentEvents这三个对象定义为全局变量,否则定义的事件不会生效,这是由于C#的垃圾回收机制造成的。
一下是关于如何获取DTE对象和订阅DocumentSaved事件的教程:Walkthrough: Accessing the DTE Object from an Editor Extension、VSIX Tutorial-Visual Studio events and Commands
四、在插件里弹出模态对话框
Modal Dialog Boxes for Visual Studio Extensions这是msdn上关于如何弹出模态窗口的教程,也可以直接使用WinForm窗口。在我开发的插件里就是直接使用WinForm窗体。
五、Editor模板下如何在工具->选项里添加选项页
在Visual Studio Package模板里可以很轻松的添加选项页,这是msdn上关于添加选项页的文章Walkthrough: Creating an Options Page。但是在Editor模板里会比较麻烦一点。
Can I add an options menu to my VSIX extension without adding a VSPackage?这是stackoverflow上关于如何在非Package模板下添加选项页的提问。通过该问题我们知道需要在项目里的source.extension.vsixmanifest文件添加<VsPackage>|%CurrentProject%|</VsPackage>元素,要添加该元素可以通过下图所示添加

除此之外还需要修改csproj文件,将GeneratePkgDefFile和CopyBuildOutputToOutputDirectory元素修改为true,如果csproj文件里没有这个两个元素则添加进去,最后一点要特别注意,IncludeAssemblyInVSIXContainer这个元素一定要添加到上述两个元素之前,否则选项页就不会显示出来。此外,还需要在csproj文件里加上
<PropertyGroup>
<RegisterWithCodebase>true</RegisterWithCodebase>
</PropertyGroup>
此元素,否则会出现错误。至此要添加选项页的功能已经可以实现了。
六、如果出现加载此属性页时如何处理
经过第五步之后选项页可以再工具->选项里显示了,但有可能会出现"加载该属性页时出错"的错误,此时则需要在source.extension.vsixmanifest文件继续添加下图的两个选项

至此,以上是我在开发VS插件的过程中遇到的问题及解决方法,希望以上对要进行VS插件开发的同学有所帮助。
VS2013插件开发的更多相关文章
- VS2013在右键菜单添加命令插件开发
一.选择Visual Studio Package模板建立插件项目 由于此功能需要在右键菜单上添加命令,所以选择Visual Studio Package模板,根据模板向导步骤插件项目,在Select ...
- VS2013文件同步插件开发
一.插件功能描述 插件监控一个xml文件,当该文档有添加新元素在保存的时候将新增的元素同步到指定的目录下. 二.模板的选择 由于该功能是跟代码编辑有关的,要监控文档的保存事件,所以要在文档打开的时候就 ...
- VS插件开发 - 登录身份验证
[附加] 很多朋友问那个VS背景怎么弄的,我刚刚已经抽时间把制作步骤发出来了: 请参见<VS插件开发 - 个性化VS IDE编辑器,瞬间 高 大 上>. 最近一直在忙着一些事情,一直没有发 ...
- Office2013插件开发Outlook篇(1)-- 第一个office2013插件
一.环境: 下载VS2013安装,记得安装office插件开发包哦. 二.新建Outlook插件项目
- 工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!
如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATI ...
- JavaScript学习笔记(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- jira的插件开发流程实践
怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...
- VS2013中的MVC5模板部署到mono上的艰辛历程
部署环境:CentOS7 + Mono 3.10 + Jexus 5.6 在Xamarin.Studio创建的asp.net项目,部署过程非常顺利,没有遇到什么问题:但在VS2013中创建的asp.n ...
- Vue插件开发入门
相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...
随机推荐
- 弹飞绵羊(bzoj 2002)
Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...
- Linux下出现launch failed.Binary not found的解决方案
Linux下出现launch failed.Binary not found的解决方案: Project->Properties->C/C++Build->Settings-> ...
- msp430项目编程06
msp430中项目---设计扫描键盘 1.扫描键盘工作原理 2.电路原理说明 3.代码(显示部分) 4.代码(键盘驱动) 5.项目总结 msp430项目编程 msp430入门学习
- poj2553 有向图缩点,强连通分量。
//求这样的sink点:它能达到的点,那个点必能达到他,即(G)={v∈V|任意w∈V:(v→w)推出(w→v)} //我法:tarjan缩点后,遍历点,如果该点到达的点不在同一个强连通中,该点排除, ...
- SQL SERVER 2012 第四章 连接 JOIN の OUTER JOIN,完全连接FULL JOIN,交叉连接CROSS JOIN
SELECT <SELECT LIST> FROM <the table you want to be the "LEFT" table> <LEFT ...
- Python从文件中读取字符串,用正则表达式匹配中文字符的问题
2013-07-27 21:01:37| 在Windows下,用Python从.txt文件中读取字符串,并用正则表达式匹配中文,在网上看了方法,用的时候发现中文没有被匹配. ...
- P2820 局域网 洛谷
https://www.luogu.org/problem/show?pid=2820 题目背景 某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成 ...
- VC++如何折叠代码
工具-选项,然后在文本编辑器,C/C++中的格式设置,把大纲语句块设置为True 这样之后,还是不能像C#一样使用region折叠代码,但是可以方法和if语句都会自动显示可以折叠. 使用#pr ...
- SpringMVC+Hibernate+Junit4+json基本框架近乎0配置
公司是做APP开发的,须要后台来提供接口,于是乎,这个任务就交给我,经过重复的尝试,学习和參考别人的demo,最终搭出自己还算惬意的框架.SpringMVC+Sping3+Hibernate4+Jun ...
- [更新Github地址]python学习,自己写了个简单聊天工具mychat
最近在学习python,自己写了个最最简单的聊天工具mychatv0.1. 第一版,完成基本的聊天功能. GUI用的是自带的TKinter,用到的模块主要就是socket(网络编程), thread( ...