LearnVSXNow!-#1 如何開始VSX開發?

LearnVSXNow!-#1 如何開始VSX開發?

(譯者注:這個系列是翻譯inovak在DiveDeeper上的LearnVSXNow系列博文,該系列的目錄可以在這裏找到,也可以點擊這裏直接訪問DiveDeeper博客) 

 

    我是一個Visual Studio的愛好者。有很多次,我都很想創建一些VS的插件來幫助我完成一些開發工作。我也一直在嘗試勸說我的同事們把他們常用的功能做成VS插件。但是,當他們問我如何入手的時候,我總是建議他們去看微軟的SDK以及相關的文檔。但我的同事們常見的問題是: 

  • · 我沒有時間去看那些上百頁的文檔。 
  • · 我不瞭解COM,而且也不想碰那東西;我想要我的.NET類。 
  • · 我看了開始的50頁,但是仍然不知道如何能夠快速開始創建一個插件。 
  • · 我看了SDK裏面的例子,但是它看起來創建我自己的Package很難。

    我並不認爲這是他們的態度問題。他們能夠學習.NET、WinForms、asp.net、WCF等等等等。據我所知,他們都有足夠的能力學習VSX(VS SDK).但是他們告訴我,那東西學起來既困難且耗費時間。 

    作爲MVP,我決定改變這個關於VS SDK和VS Package的世界。我也屬於那類非常喜歡.NET開發和VS、但是對VS SDK不自信的人。我決定首先學習一下有關Visual Studio擴展的知識,然後公佈我自己的學習方法。我的目標是給像我一樣學習VS擴展的人一個出發點,並揭開它的神祕面紗。這裏所介紹的所有內容都是針對VSX新手,所以這個系列就叫他“LearnVSXNow”. 

首先要做的

    要利用VS SDK進行開發,你需要安裝Visual Studio 2008以及Visual Studio 2008 SDK。作爲MSDN訂閱者,你可以下載並安裝Visual Studio 2008專業版(或者你可以從別的渠道獲得它)。你可以訪問Visual Studio 擴展開發者中心(http://msdn.com/vsx)下載Visual Studio 2008 SDK. 

如何進行VS IDE擴展?

    有很多方法去擴展Visual Studio(甚至是Team Foundation Server),VS擴展是對這些方法的一個統稱。如果只有一種方式擴展它,Visual Studio就不會是一個偉大的微軟式產品。對於編程方面來說,VS擴展的主要方式是通過宏、Add-ins和Visual Studio擴展包(Package)。 

     我們對Office產品中的宏已經很熟悉了,和在Office裏面一樣,我們也可以通過宏來擴展Visual Studio 2008。這是擴展VS的最簡單的方式——我們甚至不需要VS SDK。Visual Studio提供了功能允許我們去錄製宏,宏可以訪問的Visual Studio 2008的對象模型,並且可以很容易和和VS的命令融合,並提供非常有用的、自動化的屬性值。

    要成爲一個非常專業的VS宏開發人員,你需要知道在宏後面的對象模型以及一些使用他們的方法。Visual studio 提供了一些例子。最好的辦法是自己錄製一些宏然後查看其中的代碼,你可以通過這些代碼來增加你的對宏的掌握。

    儘管宏對於任務自動化非常棒,但是它並不能用於創建全新的功能。簡單來說,宏利用了VS IDE的自動化接口,但是它並沒有真正和和VS集成。當用宏開發的時候,你必須認識到任何人都可以通過宏來查看你的源代碼。

    在LearnVSXNow系列中,我不打算涉及到宏的開發。

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 Package的開發。 

如何開始

    比較三種不同的擴展方式,毫無疑問宏只是撓撓癢。Add-in和Package允許開發者對IDE進行深度的定製。所以,在這個系列中,我主要針對vs Package的開發。
微軟說,“要成功的開發VsPackage你必須學習interop程序集”。這是一個非常怪異的說法,會花費我們大量的時間。我不想說你必須學習interop程序集,我寧願說你必須理解VS Package背後的基本概念。所以請和我一起探險:讓我們破解開發VS擴展包之謎!別忘了,在這個領域我也是一個新手,只是比你早開始了幾步而已!這個一個真正的探險:我不能提前畫出整個輪廓,只知道僅有的下面幾步。當我們達到一個里程碑,我們停下來,進行總結,然後設置下一個里程碑。
    現在,我們的第一個里程碑是理解什麼是Vs Package,它怎麼工作,它包含了那些元素。我們將從實踐中開始:建立一些簡單的擴展包,然後看看裏面都有什麼。
    在下一篇我們將一起創建一個“hello world”級別的VS Package。

原文鏈接:http://dotneteers.net/blogs/divedeeper/archive/2008/01/02/LearnVSXNowPart1.aspx

譯文參考:http://www.cnblogs.com/walaqi/archive/2009/10/19/1585910.html

作者:明年我18
出處:http://www.cnblogs.com/default
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章