插件的定義
所謂插件,就是根據平台接口開發的第三方程序。第一次聽到這個名詞很是不了解,聽了解釋也不是很明白,那我們來舉個例子,比如說一輛房車,現在里面只有基本的一些設施,但是你現在想在頂部有一個曬太陽的躺椅,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原生的功能是沒有區別的,我們這個方式來開發,保證了通用性,不會隨着版本的遷移導致插件被廢棄
原文鏈接:http://www.jianshu.com/p/894fb6a4e8e4
著作權歸作者所有,轉載請聯系作者獲得授權,並標注“簡書作者”。
