VS插件开发(1)-了解什么是插件

  • 插件的定义
  • vs中的插件类型
  • 如何选择插件类型

插件的定义

所谓插件,就是根据平台接口开发的第三方程序。第一次听到这个名词很是不了解,听了解释也不是很明白,那我们来举个例子,比如说一辆房车,现在里面只有基本的一些设施,但是你现在想在顶部有一个晒太阳的躺椅,ok,这个功能需求你自己清楚的,那要怎么实现?是不是买个躺椅来就可以了?是的,只要买个躺椅。如果仅仅买个躺椅你是不是就能安装到房车顶部?那肯定不行吧,你得看看房车顶上有没有螺丝柱给你安装吧。可以看到,这个螺丝柱就是房车提供给用户的接口,你的躺椅就是插件实现的功能,而将躺椅安装到螺丝柱上,对于不同的房车肯定是有不同的方法的。所以插件是独立开发的,但是他要依赖一个平台,vs中的插件也是这么回事,vs这个平台提供了一些接口,比如你想开发编辑器相关的插件,有DTE接口,这些接口可以让你访问到vs的其他插件或者功能,你开发插件也必须安装到vs上才能正常工作。

vs中的插件类型

我最开始学习的时候搜索插件,发现很迷糊,因为vs支持的插件类型实在是有点多,所以每搜索一个,都感觉不太相同。
有很多方法去扩展Visual Studio(甚至是Team Foundation Server),VS扩展是对这些方法的一个统称。如果只有一种方式扩展它,Visual Studio就不会是一个伟大的微软式产品。对于编程方面来说,VS扩展的主要方式是通过宏、Add-ins和Visual Studio扩展包(Package)。
在vs中主流的插件开发方式有三种。

  • 我们对Office产品中的宏已经很熟悉了,和在Office里面一样,我们也可以通过宏来扩展Visual Studio 2008。这是扩展VS的最简单的方式——我们甚至不需要VS SDK。Visual Studio提供了功能允许我们去录制宏,宏可以访问的Visual Studio 2008的对象模型,并且可以很容易和和VS的命令融合,并提供非常有用的、自动化的属性值。
    要成为一个非常专业的VS宏开发人员,你需要知道在宏后面的对象模型以及一些使用他们的方法。Visual studio 提供了一些例子。最好的办法是自己录制一些宏然后查看其中的代码,你可以通过这些代码来增加你的对宏的掌握。
    尽管宏对于任务自动化非常棒,但是它并不能用于创建全新的功能。简单来说,宏利用了VS IDE的自动化接口,但是它并没有真正和和VS集成。当用宏开发的时候,你必须认识到任何人都可以通过宏来查看你的源代码。
  • Visual studio Add-ins

    Add-ins具有更加强大的功能来扩展visual studio,因为它可以访问Visual studio 2008的所有对象模型并添加新的UI元素,例如工具窗口、选项页、菜单以及工具栏命令等等,这些添加的功能看起来就行IDE的一部分。Add-ins还可以访问由IDE自己以及其他的Add-in提供的service。
    品牌也被得到保证,因为插件信息会在Visual studio启动时显示的界面里或者“关于”对话框中显示。如果你用宏来扩展VS,宏那么所有人都可以看到你的源代码,但是一个Add-in是编译了的程序集,所以你可以像其他.NET 程序集一样,使用一些保护技术来保护你的代码。
    要发布插件,你只需要简单的创建一个安装项目并编译出.msi文件就可以了。msi程序会做你的Add-in需要的所有的安装和注册任务,安装后你就可以立即使用插件了。 对于一些简单的功能来所,插件是最简单的开始方式。但在这个系列中,我并不会关注如何开发Add-ins,不过Add-in中那些用于VS Package的技术,尤其是如何使用VS IDE提供的对象模型,是非常有用的。
  • Visual Studio Package

    毫无疑问VS扩展包是扩展Visual studio最强大的工具。最直接的证据就是整个visual studio的功能就是建立在以Visual studio外壳(shell)为核心的扩展包上的。所有的Language、编辑器、调试器、Project System以及其他很多的组件都是Package。 从开发人员的角度来看,添加新的VS Package与微软添加VS IDE的核心功能是一样的。VS IDE并不会区别对待微软开发的Package和第三方开发的Package。 Package可以用你最喜爱的语言(c#, VB.NET, C++)开发,所以从知识产权保护的角度来讲他们可以像其他的.NET library一样的安全。 VS SDK提供了Package安装以及注册工具,regpkg.exe。 Visual Studio通过所谓的PLK(Package load key)来检查一个扩展包是否合法,这个PLK可以从微软站点上获取到,它是你的package的数字散列码。如果你的package部署到了产品环境下,它的PLK会被检查。(译者注:在开发与调试下不需要PLK)

注:对于vs插件类型的解释引用了这位博主的内容,大家也可以结合多方资料,来帮助学习。 明年我18

如何选择插件类型

上文已经说过了,vspackage无疑是最好的插件方式,原因有几点,对于宏和add-in ,vs已经逐步的抛弃了他们,这和vs平台的架构是有关系的,vs其实只是一个平台,或者可以说是vspackage的一个集合,它管理着这些package,很多vs自带的功能也是用vspackage来开发的,所以用vspackage来开发插件,从根本上来说和vs原生的功能是没有区别的,我们这个方式来开发,保证了通用性,不会随着版本的迁移导致插件被废弃

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容