應用程式層級增益集的架構

使用 Visual Studio 中 Office 開發人員工具建立的增益集具有同時強調穩定性和安全性的架構功能,這些功能可讓增益集與 Microsoft Office 密切合作。 本主題說明增益集的下列各方面:

  • 了解增益集

  • 增益集的元件

  • 增益集如何與 Microsoft Office 應用程式搭配運作

**適用於:**本主題中的資訊適用於 Microsoft Office 2010 和 2007 Microsoft Office system 的應用程式層級專案。 如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能

如需建立增益集的一般資訊,請參閱 Office 方案開發概觀應用程式層級增益集程式設計入門

了解增益集

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

組件會透過應用程式的主要 Interop 組件與應用程式的 COM 元件進行通訊。 如需詳細資訊,請參閱 Office 主要 Interop 組件Office 方案開發概觀

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

注意事項注意事項

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

增益集的元件

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

登錄項目

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

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

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

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

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

Visual Studio Tools for Office Runtime

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

如需詳細資訊,請參閱 Visual Studio Tools for Office Runtime 概觀

增益集如何與 Microsoft Office 應用程式搭配運作

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

增益集架構

2007 Office 增益集架構

注意事項注意事項

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

載入處理序

當使用者啟動應用程式時,就會發生下列步驟:

  1. 應用程式會檢查可識別使用 Visual Studio 中的 Office 開發人員工具所建立之增益集的登錄項目。

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

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

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

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

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

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

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

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

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

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

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

    注意事項注意事項

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

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

請參閱

概念

文件層級自訂的架構

Visual Studio Tools for Office Runtime 概觀

其他資源

Office 方案在 Visual Studio 中的架構

應用程式層級增益集程式設計

開發 Office 方案

保護 Office 方案

部署 Office 方案