VSTO 增益集的架構
適用于:Visual Studio
Visual Studio for Mac
Visual Studio Code
使用 Visual Studio 中 Office Developer Tools 建立的 VSTO 增益集具有同時強調穩定性和安全性的架構功能,這些功能可讓其與 Microsoft Office 密切合作。 本主題描述 VSTO 增益集的下列層面:
VSTO 增益集如何與 Microsoft Office 應用程式搭配運作
適用于: 本主題中的資訊適用于 VSTO 增益集專案。 如需詳細資訊,請參閱 Office 應用程式和專案類型可用的功能。
如需建立 VSTO 增益集的一般資訊,請參閱 Office 方案開發概觀 (VSTO) 和 開始使用程式設計 VSTO 載入宏。
瞭解 VSTO 增益集
當您在 Visual Studio 中使用 Office 開發人員工具來建置 VSTO 增益集時,您會建立由 Microsoft Office 應用程式載入的 Managed 程式碼元件。 載入此組件之後,VSTO 該增益集就能回應應用程式所引發的事件 (例如,當使用者按一下功能表項目時)。 VSTO 增益集也可以呼叫物件模型,以自動化和擴充應用程式,而且可以使用 .NET Framework 中的任何類別。
組件會透過應用程式的主要 Interop 組件與應用程式的 COM 元件進行通訊。 如需詳細資訊,請參閱 VSTO) (Office 主要 Interop 元件 和 Office 方案開發概觀 。
如果針對應用程式安裝多個 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 執行時間。 此執行階段包含 Unmanaged 元件和一組 Managed 組件。 Unmanaged 元件會載入 VSTO 增益集組件。 Managed 組件則會提供 VSTO 增益集程式碼用來自動化及擴充主應用程式的物件模型。
如需詳細資訊,請參閱 Visual Studio Tools for Office 執行時間概觀。
VSTO 增益集搭配 Microsoft Office 應用程式的運作方式
當使用者啟動 Microsoft Office 應用程式時,該應用程式會使用部署資訊清單和應用程式資訊清單來尋找並載入最新版的 VSTO 增益集組件。 下圖顯示這些 VSTO 增益集的基本架構。
注意
在以 .NET Framework 4 或 .NET Framework 4.5 為目標的 Office 解決方案中,解決方案會使用內嵌在方案元件中的 PIA 類型資訊呼叫主應用程式的物件模型,而不是直接呼叫 PIA。 如需詳細資訊,請參閱 設計和建立 Office 解決方案。
載入處理序
當使用者啟動應用程式,就會執行下列步驟:
應用程式會檢查可識別使用 Visual Studio 中的 Office Developer Tools 所建立之 VSTO 增益集的登錄項目。
如果應用程式找到這些登錄項目,則會載入 VSTOEE.dll,而 VSTOEE.dll 會載入 VSTOLoader.dll。 這些都是 Visual Studio 2010 Tools for Office Runtime 載入器元件的 Unmanaged DLL。 如需詳細資訊,請參閱 Visual Studio Tools for Office 執行時間概觀。
VSTOLoader.dll 載入 .NET Framework,並啟動 Visual Studio Tools for Office 執行時間的 Managed 部分。
Visual Studio Tools for Office 執行時間會檢查資訊清單更新,並下載最新的應用程式和部署資訊清單。
Visual Studio Tools for Office 執行時間會執行一系列的安全性檢查。 如需詳細資訊,請參閱 保護 Office 解決方案。
如果信任 VSTO 增益集執行,Visual Studio Tools for Office 執行時間會使用部署資訊清單和應用程式資訊清單來檢查元件更新。 如果有新版本的元件可用,執行時間會將新版本的元件下載到用戶端電腦上的 ClickOnce 快取。 如需詳細資訊,請參閱 部署 Office 解決方案。
Visual Studio Tools for Office 執行時間會建立新的應用程式域,以在其中載入 VSTO 增益集元件。
Visual Studio Tools for Office 執行時間會將 VSTO 增益集元件載入至應用程式域。
如果您已覆寫它,Visual Studio Tools for Office 執行時間會呼叫 RequestComAddInAutomationService VSTO 增益集中的 方法。
您可以選擇覆寫這個方法,以便將 VSTO 增益集中的物件公開至其他 Microsoft Office 方案。 如需詳細資訊,請參閱 從其他 Office 解決方案呼叫 VSTO 增益集中的程式碼。
如果您已覆寫它,Visual Studio Tools for Office 執行時間會呼叫 RequestService VSTO 增益集中的 方法。
您可以選擇覆寫這個方法,傳回實作擴充性介面的物件以擴充 Microsoft Office 功能。 如需詳細資訊,請參閱 使用擴充性介面自訂 UI 功能。
注意
Visual Studio Tools for Office 執行時間會針對主應用程式所支援的每個擴充性介面,對 方法進行個別呼叫 RequestService 。 雖然第一次呼叫 RequestService 方法通常發生於呼叫
ThisAddIn_Startup
方法之前,但 VSTO 增益集不得假設何時將會呼叫 RequestService 方法,或將會呼叫的次數。Visual Studio Tools for Office 執行時間會呼叫
ThisAddIn_Startup
VSTO 增益集中的 方法。 這個方法是 Startup 事件的預設事件處理常式。 如需詳細資訊,請參閱 Office 專案中的事件。