深入探索 Visual Studio SDK
本節提供 Visual Studio 擴充功能的深入資訊,包括 Visual Studio 架構、元件、服務、架構、公用程式等。
擴充性架構
下圖顯示 Visual Studio 擴充性架構。 VSPackage 提供應用程式功能,以服務的形式在 IDE 中共用。 標準 IDE 也提供一系列服務,例如 SVsUIShell,它提供對 IDE 視窗化功能的存取。
Visual Studio 結構的一般化檢視
VSPackage
VSPackage 是使用 UI 項目、服務、專案、編輯器和設計工具來構成和擴充 Visual Studio 的軟體模組。 VSPackage 是 Visual Studio 的中央架構單位。 如需詳細資訊,請參閱 VSPackages。
Visual Studio Shell
Visual Studio 殼層提供基本功能,並支援其元件 VSPackage 和 MEF 擴充功能之間的跨通訊。 如需詳細資訊,請參閱 Visual Studio Shell。
使用者體驗指南
如果您打算為 Visual Studio 設計新功能,則應查看以下設計指南和可用性提示:Visual Studio 使用者體驗指南。
命令
命令是完成工作 (例如,列印文件、重新整理檢視,或建立新檔案) 的功能。
當擴充 Visual Studio 時,可以建立命令,並向 Visual Studio 殼層註冊。 您可以指定這些命令在 IDE 中的顯示方式,例如:在功能表或工具列上。 一般而言,自訂命令會出現在 [工具] 功能表上,而顯示工具視窗的命令會出現在 [檢視] 功能表的 [其他 Windows] 子功能表上。
建立命令時,也必須一併建立它的事件處理常式。 事件處理常式可判斷命令的顯示和啟用時間、可讓您修改其文字,並確保在命令啟動時適當地回應。 在大部分情況下,IDE 透過使用 IOleCommandTarget 介面來處理命令。 Visual Studio 中的命令會從最內層命令內容開始 (根據本機選取範圍) 到最外層內容 (根據全域選取範圍)。 加入主功能表的命令可立即用於指令碼編寫。
如需詳細資訊,請參閱命令、功能表及工具列。
功能表和工具列
功能表和工具列為使用者提供呼叫命令的方式。 功能表是命令的資料列或欄,通常在工具視窗頂端顯示為個別的文字項目。 子功能表是當使用者按一下包含小箭號的命令時出現的次要功能表。 當使用者以滑鼠右鍵按一下特定 UI 元素時,會出現操作功能表。 一些常見功能表名稱是 [檔案]、[編輯]、[檢視] 和 [視窗]。 如需詳細資訊,請參閱擴充功能表和命令。
工具列是資料列或資料行的按鈕和其他控制項 (例如下拉式方塊、清單方塊和文字方塊)。 工具列按鈕通常有圖示影像,例如 [開啟檔案] 命令的資料夾圖示或 [列印] 命令的印表機。 所有工具列元素都是與命令相關聯。 按一下工具列按鈕時,會執行其相關聯的命令。 在下拉式清單控制項時,下拉式清單中的每個項目都是與不同的命令相關聯。 某些工具列控制項 (例如:分隔器控制項) 是混合式控件。 控制項的一側是工具列按鈕,另一側是向下箭頭,按下箭頭時會顯示多個命令。
工具視窗
IDE 中會使用工具視窗來顯示資訊。 [工具箱]、[方案總管]、[屬性] 視窗和 [網頁瀏覽器] 是工具視窗範例。
工具視窗通常會提供使用者可與其互動的各種控制項。 例如,[屬性] 視窗可讓使用者設定特定用途的物件屬性。 [屬性] 視窗在這個意義上是特製化的,但也是通用的,因為它可以在許多不同的情況下使用。 同樣地,[輸出] 視窗是特製化的,因為它提供文字型輸出,但它也是通用的,因為 Visual Studio 中的許多子系統都可以使用它向 Visual Studio 使用者提供輸出。
請考慮下方的 Visual Studio 圖片,其中包含多個工具視窗:
某些工具視窗會停駐在單一窗格中,該窗格顯示 [方案總管] 工具視窗並隱藏其他工具視窗,但透過按一下索引標籤即可使用它們。 圖片顯示另外兩個工具視窗,即 [錯誤清單] 和 [輸出] 視窗,並停駐在單一窗格中。
還顯示主要文件窗格,其中顯示幾個編輯器視窗。 雖然工具視窗通常只有一個執行個體 (例如,您只能開啟一個 [方案總管]),但編輯器視窗可以有多個執行個體,每個執行個體都用來編輯個別的文件,但所有執行個體都會停駐在同一個窗格中。 圖片顯示一個文件窗格,其中包含兩個編輯器視窗,一個表單設計工具視窗。 按一下索引標籤即可使用文件窗格中的所有視窗,但包含 EditorPane.cs 檔案的編輯器視窗會顯示且為使用中。
擴充 Visual Studio 時,您可以建立工具視窗,讓 Visual Studio 使用者與您的擴充功能互動。 您也可以建立自己的編輯器,讓 Visual Studio 使用者編輯文件。 因為您的工具視窗和編輯器會整合到 Visual Studio 中,因此您無需進行程式設計即可正確停駐或顯示在索引標籤上。 在 Visual Studio 中正確註冊後,它們會自動在 Visual Studio 中具有工具視窗和文件視窗的一般功能。 如需詳細資訊,請參閱擴充和自訂工具 Windows。
文件視窗
文件視窗是多文件介面 (MDI) 視窗的框架子視窗。 文件視窗通常用來裝載文字編輯器、表單編輯器 (也稱為設計工具),或編輯控制項,但也可以裝載其他功能類型。 [新增檔案] 對話方塊包含 Visual Studio 提供的文件視窗範例。
大部分的編輯器都有特定的程式設計語言或文件類型,例如:HTML 頁面、框架組、C++ 檔案或標頭檔。 在 [新增檔案] 對話方塊中選取範本,使用者可以為與該範本關聯的檔案類型之編輯器動態建立文件視窗。 當使用者開啟現有的檔案時,也會建立文件視窗。
文件視窗僅限於 MDI 工作區。 每個文件視窗的頂端都有一個索引標籤,而索引標籤順序會連結到 MDI 區域中可能開啟的其他視窗。 以滑鼠右鍵按一下文件視窗的索引標籤會顯示捷徑功能表,其中包含將 MDI 區域分割成多個水平或垂直索引標籤群組的選項。 分割 MDI 區域可同時檢視多個檔案。 如需詳細資訊,請參閱文件視窗。
編輯器
您可自訂 Visual Studio 編輯器,並透過 Managed Extensibility Framework (MEF) 將其用於您自己的內容類型。 在許多情況下,您不需要建立 VSPackage 來擴充編輯器,不過如果您想要包含殼層中的功能 (例如:功能表命令或快速鍵),您可以將 MEF 擴充功能與 VSPackage 結合。
您也可以建立自訂編輯器,例如:如果您希望讀取和寫入資料庫,或是想要使用設計工具。 您也可以使用外部編輯器,例如:記事本或 Microsoft WordPad。 如需詳細資訊,請參閱編輯器和語言服務擴充功能。
語言服務
如果您希望 Visual Studio 編輯器支援新的程式設計關鍵字,或甚至是新的程式設計語言,您可以建立語言服務。 每種語言服務都可以完全、部分或完全不實作特定編輯器功能。 根據設定方式而定,語言服務可以在編輯器中提供語法醒目提示、括號對稱、IntelliSense 支援和其他功能。
語言服務的核心是剖析器和掃描器。 掃描器 (或語彙分析器) 會將來源檔案分割成稱為權杖的元素,而剖析器會建立這些權杖之間的關聯性。 建立語言服務時,必須實作剖析器和掃描器,以便 Visual Studio 能夠理解該語言的權杖和語法。 您可以建立受控或未受控語言服務。 如需詳細資訊,請參閱舊版語言服務的擴充性。
專案
在 Visual Studio 中,專案是開發人員用來組織和建置原始程式碼和其他資源的容器。 專案可讓您組織、建置、偵錯,以及部署原始程式碼、對 Web 服務、資料庫和其他資源的參考。 VSPackage 可以藉由提供專案類型、專案子類型和自訂工具,來擴充 Visual Studio 專案系統。
專案也可以集中在一個方案中,其為一或多個共同運作以建立應用程式的專案群組。 與方案相關的專案和狀態資訊會儲存在兩個方案檔案中、以文字為基礎的方案 (.sln) 檔案和二進位方案使用者選項 (.suo) 檔案中。 這些檔案類似於舊版 Visual Basic 中使用的群組 (.vbg) 檔案,以及舊版 C++ 中使用的工作區 (.dsw) 和使用者選項 (.opt) 檔案。
專案與項目範本
Visual Studio 包含預先定義的專案範本和專案項目範本。 您也可以製作自己的範本,或從社群取得範本,然後將其整合到 Visual Studio 中。 MSDN 程式碼庫是範本和擴充功能的位置。
範本包含建置特定應用程式、控制項、程式庫或類別所需的專案結構和基本檔案。 當您想要開發類似其中一個範本的軟體時,請建立一個以範本為基礎的專案,然後修改該專案中的檔案。
注意
Visual C++ 專案不支援此範本架構。
如需詳細資訊,請參閱新增專案與專案項目範本。
屬性和選項
[屬性] 視窗顯示單一或多個選取項目的屬性:[擴充屬性] 選項頁面包含一組與特定元件相關的選項,例如:程式語言或 VSPackage:[選項和選項頁]。 設定通常是可以匯入和匯出的 UI 相關功能:支援使用者設定。
Visual Studio 服務
服務會提供一組特定的介面供元件使用。 Visual Studio 提供一組可由任何元件 (包括擴充功能) 使用的服務。 例如,Visual Studio 服務可動態顯示或隱藏工具視窗,啟用 [說明]、[狀態列] 或 UI 事件的存取權。 Visual Studio 編輯器也提供可以透過編輯器擴充功能匯入的服務。 如需詳細資訊,請參閱使用和提供服務。
偵錯工具
偵錯工具是語言特定偵錯元件的使用者介面。 如果您已建立新的語言服務,則必須建立特定的偵錯引擎以連結至偵錯工具。 如需詳細資訊,請參閱 Visual Studio 偵錯工具的擴充性。
原始檔控制
如需實作原始檔控制外掛程式或 VSPackage 的詳細資訊,請參閱 原始檔控制。
精靈
您可以與新的項目類型一起建立精靈,以便精靈可協助使用者在建立該類型的新專案時做出正確的決策。 如需詳細資訊,請參閱精靈。
自訂工具
自訂工具可讓您將工具與專案中的專案產生關聯,並在儲存檔案時執行該工具。 如需詳細資訊,請參閱自訂工具。
VSSDK 公用程式
VSSDK 包含一組您可能需要的公用程式,以便處理 VSPackage 的不同部分。 如需詳細資訊,請參閱 VSSDK 公用程式。
使用 Windows Installer。
在某些情況下,您可能需要使用 Windows Installer,而不是 VSIX 安裝程式:例如,您可能需要寫入登錄。 如需搭配擴充功能使用 Windows Installer 的詳細資訊,請參閱使用 Windows Installer 安裝 VSPackages。
說明檢視器
您可以將自己的說明和 F1 頁面整合到說明檢視器中。 如需詳細資訊,請參閱 Microsoft 說明檢視器 SDK。