一、功能描述

项目中有一个AppSettings.xml文件,当这个文件有添加新元素的时候,将该添加的内容自动同步到其他目录下的AppSettings.xml文件。

二、插件模板选择

要开发VS插件需要安装SDK,安装后在添加新项目->Visal C#->扩展性下选择要使用的插件模板,由于本功能是跟文本编辑有关的,所以选择Editor Text Adornment模板,也可以选择其他的模板进行开发。下面是两个插件的示例:Visual Studio Text Editor ExtensionBuilding 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 ExtensionVSIX 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插件开发的更多相关文章

  1. VS2013在右键菜单添加命令插件开发

    一.选择Visual Studio Package模板建立插件项目 由于此功能需要在右键菜单上添加命令,所以选择Visual Studio Package模板,根据模板向导步骤插件项目,在Select ...

  2. VS2013文件同步插件开发

    一.插件功能描述 插件监控一个xml文件,当该文档有添加新元素在保存的时候将新增的元素同步到指定的目录下. 二.模板的选择 由于该功能是跟代码编辑有关的,要监控文档的保存事件,所以要在文档打开的时候就 ...

  3. VS插件开发 - 登录身份验证

    [附加] 很多朋友问那个VS背景怎么弄的,我刚刚已经抽时间把制作步骤发出来了: 请参见<VS插件开发 - 个性化VS IDE编辑器,瞬间 高 大 上>. 最近一直在忙着一些事情,一直没有发 ...

  4. Office2013插件开发Outlook篇(1)-- 第一个office2013插件

    一.环境: 下载VS2013安装,记得安装office插件开发包哦. 二.新建Outlook插件项目

  5. 工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!

    如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATI ...

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

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

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

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

  8. VS2013中的MVC5模板部署到mono上的艰辛历程

    部署环境:CentOS7 + Mono 3.10 + Jexus 5.6 在Xamarin.Studio创建的asp.net项目,部署过程非常顺利,没有遇到什么问题:但在VS2013中创建的asp.n ...

  9. Vue插件开发入门

    相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...

随机推荐

  1. 【LibreOJ10121】与众不同(RMQ,二分)

    题意: 思路: C++ #include<map> #include<set> #include<cmath> #include<cstdio> #in ...

  2. 深入理解计算机操作系统——第10章:UNIX IO,打开,关闭,读写文件

    系统级IO:输入输出是主存与外部设备(磁盘,终端,网络)之间拷贝数据的过程 输入:从IO设备拷贝数据到主存中 输出:从主存中拷贝数据到IO设备中 10.1 unix IO 所有的IO设备都被模型化为文 ...

  3. Spring注解 @Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析

    @Repository.@Service.@Controller 这几个是一个类型,其实@Component 跟他们也是一个类型的 Spring 2.5 中除了提供 @Component 注释外,还定 ...

  4. ubuntu 14.04 安装docker,docker-compose

    通过阿里的镜像安装 curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | s ...

  5. [Bzoj1083][SCOI2005]互不侵犯king(状压dp)

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4595  Solved: 2664[Submit][ ...

  6. powerDigner使用

    PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...

  7. Arcgis栅格时序地图制作---时间轴动态展示多期影像

    转自原文 Arcgis栅格时序地图制作---时间轴动态展示多期影像 效果如何???满意您go on,不满意咱 say goodbye··· 题外话: 为了在这里动态展示下制作结果,也是费了老劲了,转换 ...

  8. 【stl学习笔记】set、multiset

    set和multiset会根据特定的排序准则,自动将元素排序.两者不同处在于multiset允许元素重复而set不允许 在使用set或multiset之前,必须先加入头文件<set> se ...

  9. Windows——cmd findstr 字符串查找增强使用说明

    在文件中寻找字符串. 复制代码代码如下: FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [ ...

  10. linux系列之-—03 常见问题

    问题1 描述:Linux如何查看JDK的安装路径 问题2 描述:执行shell脚本时报错,错误信息为:bash: line 19: jar: command not found 原因:因为在系统环境变 ...