增益集啟動
一旦您使用探索方法並取得特定主應用程式檢視的增益集語彙基元集合,就可以使用語彙基元從集合啟動增益集,該語彙基元會以 AddInToken 物件表示。 如需如何探索系統上可用增益集的詳細資訊,請參閱增益集探索。
當您在 AddInToken 物件上使用 Activate 方法多載時,可指定以下啟動選項:
增益集載入其中的應用程式定義域。
安全性信任層級或權限集合,會授與為該增益集所建立的應用程式定義域。
外部處理序,將在其中啟動增益集。 這是進階增益集開發選項。
Activate 方法會傳回增益集主機檢視,然後主應用程式就可呼叫合約中定義的方法。 主應用程式可使用 AddInController 類別關閉增益集的方式,控制增益集的使用壽命。 此外還能在不再參考增益集時,讓記憶體回收行程進行回收。
啟動
通常主應用程式會讓主應用程式和增益集分別在不同的應用程式定義域中執行,且一個應用程式定義域只有一個增益集。 如此可讓增益集在與主應用程式和其他增益集隔離的內容中執行。 這類隔離可避免衝突,並且啟用增益集的版本控制。
由於增益集位於自己的應用程式定義域中,因此您可以在增益集所屬環境中測試該增益集,並且還可以測試增益集端的管線。 增益集配接器、合約和增益集檢視管線區段,都會載入與增益集相同的應用程式定義域中。 增益集需要的任何其他組件也會載入增益集的應用程式定義域中。
啟動增益集時,主應用程式通常會使用 Activate 方法多載,該方法多載會採用指定的安全性層級,並且自動為增益集建立應用程式定義域。 您可以指定安全性層級的 AddInSecurityLevel 或 PermissionSet。 當 Activate 方法為增益集建立應用程式定義域時,會將應用程式定義域的組態檔設定為 addinassemblyname.config (如果該組態檔存在的話)。
如需更詳細的控制或增益集集區,您可以使用 AddInToken.Activate 方法的多載指定現有的應用程式定義域以載入增益集。 如果您指定現有的應用程式定義域,則很容易就能與其他增益集共用資源、安全性內容及文化特性資訊。
您應考慮將套用至增益集應用程式定義域的安全性內容。 例如,主應用程式可能以完全信任的狀態執行,但需要以較少權限執行增益集。 您可以使用 Activate 方法的多載指定 AddInSecurityLevel 列舉型別的安全性區域。 這些安全性區域包括 FullTrust、Host、Intranet 或 Internet。 適當的安全性區域全線會套用至應用程式定義域中執行的程式碼。 這些安全性區域可用的權限依據現有的 .NET Framework 安全性設定而定。
如果您不要使用安全性區域的權限,可以使用 Activate 方法的多載提供您自己的 PermissionSet 物件。
您可以使用 Activate 方法的多載建立增益集的外部處理緒,或是將增益集附加至對主應用程式增益集建立的現有外部處理序。 這些多載會使用 AddInProcess 和 AddInEnvironment 類別。 如需在外部處理序中啟動增益集的詳細資訊,請參閱 HOW TO:以不同的隔離和安全性層級啟動增益集。
增益集存留期控制
AddInController 類別提供以下增益集工作的方法:
關閉增益集。
取得增益集的應用程式定義域。
取得增益集的語彙基元以供未來啟動。
取得 AddInEnvironment 物件,以搭配外部處理序啟動使用。
使用 GetAddInController 方法取得指定增益集的控制器。
Shutdown 方法會處理關閉增益集所需的詳細資料。 這包括知道要載入增益集的位置、增益集的應用程式定義域,以及增益集會在其中執行的外部處理序。 如果該應用程式定義域是自動建立,則這個方法會卸載該應用程式定義域。 如果增益集是在指定的應用程式定義域中啟動,則遠端合約物件上的存留期服務將逾時,如此會讓應用程式定義域維持載入狀態。 處置合約物件時,增益集將可供記憶體回收進行回收。
範例
以下範例將在自動建立的應用程式定義域中,啟動含指定安全性層級的增益集。
'Ask the user which add-in they would like to use.
Dim selectedToken As AddInToken = ChooseAddIn(tokens)
'Activate the selected AddInToken in a new
'application domain with the Internet trust level.
Dim CalcAddIn As Calculator = selectedToken.Activate(Of Calculator)(AddInSecurityLevel.Internet)
'Run the add-in using a custom method.
RunCalculator(CalcAddIn)
//Ask the user which add-in they would like to use.
AddInToken selectedToken = ChooseAddIn(tokens);
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);
//Run the add-in using a custom method.
RunCalculator(CalcAddIn);