用C#写vs插件中的一些Tip

最近用C#写了一个vs的插件,主要功能是插入标准的注释段和一些常用的代码段。在开发过程中,遇到了一些问题,也翻阅了一些资料,做了一番研究。这里对其中的一些小问题做一个简单的纪录,希望能够有所帮助。

(1)在OnConnection中,判断connectMode时,一定要加上ext_cm_AfterStartup

if(connectMode == Extensibility.ext_ConnectMode.ext_cm_UISetup
|| connectMode == Extensibility.ext_ConnectMode.ext_cm_Startup
|| connectMode == Extensibility.ext_ConnectMode.ext_cm_AfterStartup) // this line will work when u choose addin in addin manager
这样子,在vs的Addin Manager中选中插件时,插件才会重新显示出来,一般的范例中,只有前两个判断

(2)QueryState中,设置state时,要使用下面语句

if( 是你加入的command )
{
if( 满足显示的条件 )
status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported|vsCommandStatus.vsCommandStatusEnabled;
else
status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported;
}
else
status = (vsCommandStatus)vsCommandStatus.vsCommandStatusUnsupported;
这样做,才能在条件不满足时,插件的菜单变灰

(3)判断代码窗口存在的方法是

(applicationObject.ActiveWindow != null) && (applicationObject.ActiveWindow.Type == vsWindowType.vsWindowTypeDocument)

就是说当前有活动窗口,而且其类型是文档类型

(4)在文档窗口插入字符的方法是

TextSelection ts = (TextSelection)applicationObject.ActiveDocument.Selection;
EditPoint ep = ts.ActivePoint.CreateEditPoint();

ep.Insert(strCode);
当然,还可以调用EditPoint的其它方法,来实现删除,替换等等

差不多就酱紫了,感觉用C#来做插件程序好简单啊,同时感到微软设计的对象模型用起来真是舒服,平时开发时如果能够自己设计出这么好的系统,该有多好阿,哈哈

时间: 2024-08-22 14:19:45

用C#写vs插件中的一些Tip的相关文章

锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]

1.表单验证插件Validation   2.表单插件Form   3.动态事件绑定插件livequery 可以为后来的元素绑定事件   类似于jQuery中的live()方法     4.jQuery UI   5.jQuery Cookie   6.遮罩层插件:thickbox   7.编写jQuery插件 <1>编写插件的目的:给已经有的一些列方法或函数做一个封装,一遍在其他地方使用,方便后期维护和提高开发效率.   <2>三种类型的插件 a:封装对象方法的插件 jQuery

如何在插件里渲染另一个插件中的vm文件?

问题描述 我写了一个插件,想使用TemplateRenderer接口渲染存放在另一个插件中的vm模板文件,不知道那位高手能解答一下.

ios-AppCan中 iOS原生代码 调试插件 中出现的问题

问题描述 AppCan中 iOS原生代码 调试插件 中出现的问题 在调试插件过程中 index.html中的 按钮可以调用createDemo(); 但是createDemo();中得uexDemo.open是怎么回调的? function createDemo(){ alert("----"); uexDemo.open('0','120','320','416'); } uexDemo在plugin.xml中写了 <?xml version="1.0" e

自己动手手写jQuery插件总结_jquery

jQuery是继Prototype之后的又一款优秀的JavaScript框架,深受广大开发者热爱,用户甚广.而jQuery一个很好的地方在 于用户的自定义,即我们可以书写自己的插件来完善jQuery的各项功能,定制自己所需要的功能,剔除冗余的代码,在页面加载时候可以有一定程度上的提 升. 面试之后,触动很大,就是你要做的是一个了解十项还是精通一项的开发者?于是花了几天时间苦逼的研读jQuery源码,了解了jQuery的事件机制.选择器以及浏览器兼容性是如何做到的等.之后就一直想要书写一款jQue

写JQuery插件的基本知识_jquery

普及JQuery知识 知识1:用JQuery写插件时,最核心的方法有如下两个: 复制代码 代码如下: $.extend(object) 可以理解为JQuery 添加一个静态方法. $.fn.extend(object) 可以理解为JQuery实例添加一个方法. 基本的定义与调用: 复制代码 代码如下: /* $.extend 定义与调用* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

ESFramework使用技巧(3) - 在插件中使用Spring.net

根据插件的"自治"性,插件如果需要配置信息,则插件应该自己能读取和修改配置信息,而不是框架或宿主来完成这些事情.这种松耦合特性,我们曾在ESFramework介绍之(29)―― 插件公共设施 AddinUtil 一文中特别强调过. 当一个插件非常复杂时,可能需要大量的配置信息或装配信息,使用Spring.net的IOC容器实现自动装配是一种非常方便的方法,我们的插件需要自己来操作Spring.net容器,而不是依赖于框架或宿主应用.而且,宿主应用通常也有自己的复杂的配置需要管理.在ES

ESFramework使用技巧(2) - 在插件中使用NHibernate

我们来讨论一下这种情景,你采用基于ESFramework的4层架构进行应用开发,你分析用户的需求,并将其分类整理为几大块,考虑每一块使用一个功能插件来完成.在这几个插件中,有个插件需要访问某个数据库,并且只有这个插件需要访问这个数据库,根据插件的"自治"性质,你不想将本插件中的数据访问"上升蔓延"到应用程序(FS),而是让它"仅仅"在本插件中,这样,无论是对FS还是插件都是有好处的--FS自己不需要访问数据库(日志记录除外),插件"自治

java-sql写在xml中,但如何做到灵活

问题描述 sql写在xml中,但如何做到灵活 比如 SELECT * FROM USER WHERE CreateTime=? AND TYPE=? 但是更多的时候,查询不带CreateTime参数.但又不想在java代码中拼凑SQL语句. 想SQL和JAVA尽量分开. 但到一种办法. SELECT * FROM USER 然后在代码中根据参数条件,拼凑WHERE条件,但是这样还是没有解决在JAVA中拼凑SQL的问题. 解决方案 把所有where的参数也放xml中,然后代码中解析xml来拼接SQ

在使用spring的过程中,service层写在配置文件中好呢还是注解配置好呢?

问题描述 在使用spring的过程中,service层写在配置文件中好呢还是注解配置好呢? 在使用spring的过程中,service层写在配置文件中好呢还是注解配置好呢?在配置文件中是这样的注解配置时这样的@Service(""userService"")说说理由哦. 解决方案 一般应用性开发使用注解就可以.它较xml配置方式的优势在于省去了xml复杂的配置,而且不需要维护两套内容(xml配置方式需要维护service类和xml文件).但是如果需要修改相关内容,注