Architecture of VSTO Add-ins

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

了解 VSTO 增益集

當您使用 Visual Studio 中的 Office Developer Tools 建置 VSTO 增益集時,會建立由 Microsoft Office 應用程式載入的 受控程式碼組件。 載入此組件之後,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 方案 ClickOnce

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

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 Runtime 概觀

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

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

2007 Office add-in architecture

注意

在以 .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 Runtime 概觀

  3. VSTOLoader.dll 載入 .NET Framework 並啟動 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 會呼叫 VSTO 增益集中的 RequestComAddInAutomationService 方法 (如果已覆寫)。

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

  10. Visual Studio Tools for Office Runtime 會呼叫 VSTO 增益集中的 RequestService 方法 (如果已覆寫)。

    您可以選擇覆寫這個方法,傳回實作擴充性介面的物件以擴充 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 專案中的事件