VSTO 增益集的架構

使用 Visual Studio 中 Office Developer Tools 建立的 VSTO 增益集具有同時強調穩定性和安全性的架構功能,這些功能可讓其與 Microsoft Office 密切合作。 本主題描述 VSTO 增益集的下列層面:

瞭解 VSTO 增益集

當您使用 Visual Studio 中的 Office 開發人員工具來建立 VSTO 的增益集時,您會建立由 Microsoft Office 應用程式載入的 managed 程式碼元件。 載入此組件之後,VSTO 該增益集就能回應應用程式所引發的事件 (例如,當使用者按一下功能表項目時)。 VSTO 增益集還可呼叫物件模型以自動化並擴充應用程式,而且它可以使用 .NET Framework中的任何類別。

組件會透過應用程式的主要 Interop 組件與應用程式的 COM 元件進行通訊。 如需詳細資訊,請參閱Office 主要 interop 元件Office 解決方案開發總覽 (VSTO)

如果針對應用程式安裝多個 VSTO 增益集,則每一個 VSTO 增益集會在不同的應用程式定義域中載入。 這表示如果某個 VSTO 增益集運作失常,並不會導致其他 VSTO 增益集失敗。 此外,這樣有助於確保應用程式關閉後,所有 VSTO 增益集組件都會從記憶體中卸載。 如需應用程式域的詳細資訊,請參閱 應用程式域

注意

您使用 Visual Studio 中的 Office Developer Tools 建立的 VSTO 增益集,是設計為只在使用者啟動 Microsoft Office 主應用程式時使用。 如果是以程式設計的方式啟動應用程式 (例如,使用 Automation),則該 VSTO 增益集可能無法如預期般運作。

VSTO 增益集的元件

雖然 VSTO 增益集組件為主要元件,但還有其他數個元件在 Microsoft Office 應用程式探索和載入 VSTO 增益集的方式中扮演重要角色。

登錄項目

Microsoft Office 應用程式會藉由尋找一組登錄項目來探索 VSTO 增益集。 如需 VSTO 增益集所使用之登錄專案的完整清單,請參閱VSTO 增益集的登錄專案

當您建置方案時,Visual Studio 會在開發電腦上建立所有必要的登錄項目,以便您偵錯和執行 VSTO 增益集。 如需詳細資訊,請參閱組建 Office 方案

如果您使用 ClickOnce 部署方案,則發佈程式所產生的安裝程式會自動在終端使用者電腦上建立登錄機碼。 如需詳細資訊,請參閱使用 ClickOnce 部署 Office 的解決方案

部署資訊清單和應用程式資訊清單

VSTO 增益集會使用部署資訊清單和應用程式資訊清單來識別及載入最新版的 VSTO 增益集組件。 部署資訊清單會指向目前的應用程式資訊清單。 而應用程式資訊清單會指向 VSTO 增益集組件,並指定要在組件中執行的進入點類別。 如需詳細資訊,請參閱Office 解決方案中的應用程式和部署資訊清單

Visual Studio Tools for Office Runtime

若要執行使用 Visual Studio 中的 Office 開發人員工具所建立 VSTO 增益集,使用者電腦必須已 Visual Studio Tools for Office Runtime 安裝。 此執行階段包含 Unmanaged 元件和一組 Managed 組件。 Unmanaged 元件會載入 VSTO 增益集組件。 Managed 組件則會提供 VSTO 增益集程式碼用來自動化及擴充主應用程式的物件模型。

如需詳細資訊,請參閱Visual Studio Tools for Office 執行時間總覽

VSTO 增益集與 Microsoft Office 應用程式搭配運作的方式

當使用者啟動 Microsoft Office 應用程式時,該應用程式會使用部署資訊清單和應用程式資訊清單來尋找並載入最新版的 VSTO 增益集組件。 下圖顯示這些 VSTO 增益集的基本架構。

2007 Office 增益集架構

注意

在以 .NET Framework 4 或 .NET Framework 4.5為目標的 Office 方案中,方案會使用內嵌於方案組件中的 PIA 類型資訊來呼叫主應用程式的物件模型,而不是直接呼叫 PIA。 如需詳細資訊,請參閱設計和建立 Office 的解決方案

載入處理序

當使用者啟動應用程式,就會執行下列步驟:

  1. 應用程式會檢查可識別使用 Visual Studio 中的 Office Developer Tools 所建立之 VSTO 增益集的登錄項目。

  2. 如果應用程式找到這些登錄項目,則會載入 VSTOEE.dll,而 VSTOEE.dll 會載入 VSTOLoader.dll。 這些都是 Visual Studio 2010 Tools for Office Runtime 載入器元件的 Unmanaged DLL。 如需詳細資訊,請參閱Visual Studio Tools for Office 執行時間總覽

  3. VSTOLoader.dll 載入 .NET Framework ,並啟動的 managed 部分 Visual Studio Tools for Office Runtime 。

  4. Visual Studio Tools for Office Runtime 會檢查資訊清單更新,然後下載最新的應用程式和部署資訊清單。

  5. Visual Studio Tools for Office Runtime 會執行一系列的安全性檢查。 如需詳細資訊,請參閱安全 Office 方案

  6. 如果 VSTO 增益集受信任而得以執行,則 Visual Studio Tools for Office Runtime 會使用部署資訊清單和應用程式資訊清單來檢查組件更新。 如果有新版的組件可用,執行階段就會將新版的組件下載至用戶端電腦上的 ClickOnce 快取。 如需詳細資訊,請參閱部署 Office 方案

  7. Visual Studio Tools for Office Runtime 會建立新的應用程式定義域,以便載入 VSTO 增益集組件。

  8. Visual Studio Tools for Office Runtime 會將 VSTO 增益集組件載入至此應用程式定義域中。

  9. 如果您已覆寫 Visual Studio Tools for Office Runtime 方法,則 RequestComAddInAutomationService 會在您的 VSTO 增益集中呼叫此方法。

    您可以選擇覆寫這個方法,以便將 VSTO 增益集中的物件公開至其他 Microsoft Office 方案。 如需詳細資訊,請參閱從其他 Office 方案 VSTO 增益集呼叫程式碼

  10. 如果您已覆寫 Visual Studio Tools for Office Runtime 方法,則 RequestService 會在您的 VSTO 增益集中呼叫此方法。

    您可以選擇覆寫這個方法,傳回實作擴充性介面的物件以擴充 Microsoft Office 功能。 如需詳細資訊,請參閱使用擴充性 介面自訂 UI 功能

    注意

    Visual Studio Tools for Office Runtime 會針對主應用程式支援的每個擴充性介面,個別呼叫 RequestService 方法。 雖然第一次呼叫 RequestService 方法通常發生於呼叫 ThisAddIn_Startup 方法之前,但 VSTO 增益集不得假設何時將會呼叫 RequestService 方法,或將會呼叫的次數。

  11. Visual Studio Tools for Office Runtime 會在 VSTO 增益集中呼叫 ThisAddIn_Startup 方法。 這個方法是 Startup 事件的預設事件處理常式。 如需詳細資訊,請參閱Office 專案中的事件

另請參閱