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 ...
随机推荐
- 【随机化算法】codeforces Matrix God
http://codeforces.com/gym/101341 [题意] 给定三个方阵A,B,C,问AB=C是否成立? 方阵的规模最大为1000 [思路] 求AB的时间复杂度为n*n*n,会超时 左 ...
- FastDfs + Dht 搭建笔记
以下为搭建一套分布式文件集群系统,参考了很多资料,自己经过在服务器上搭建并且经过了测试.记录以方便以后使用查看. FastDfs + Dht 安装手册 一:概述 FastDFS是由淘宝的余庆先生所开发 ...
- BZOJ 3884 拓展欧拉定理
3884: 上帝与集合的正确用法 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 4142 Solved: 1907[Submit][Status][D ...
- [Bzoj5177][Jsoi2013]贪心的导游(主席树)
5177: [Jsoi2013]贪心的导游 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 32 Solved: 15[Submit][Status] ...
- Java面试题总结之JDBC 和Hibernate
1.100 用户同时来访数据库,要采取什么技术? 答:采用数据库连接池. 2.什么是ORM? 答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决面向对象与 ...
- eclipse导入maven工程步骤
转自:http://jingyan.baidu.com/article/cbf0e500a6e3252eaa2893c1.html 感谢作者 步骤一 : 选择 “Import”操作 有两个途径可以选择 ...
- 地球Gauss_Kruger中央0度经线图
- VB6 如何自定义代码字体和支持鼠标滚轮
1 点击工具-选项-编辑器格式,把代码改成需要的字体和大小.(一般微软雅黑,16号字体比较好) 2 从以下网站下载VB6增强工具,可以支持鼠标滚轮代替右侧滚动条查看代码,按F3还可以切换代码窗口和 ...
- curl_setopt GET的方法
$ch ") ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; curl_setopt($ch, CURLOPT_BINARYTRANSF ...
- 运算符与类型转换 mogondb简介
运算符与类型转换 1.运算符 (1)分类 算术运算符.关系运算符.逻辑运算符.位运算符.赋值运算符.其他运算符 >.算术运算符: 运算符 描述 + 把两个操作数相加 - 从第一个操作数中减去 ...