Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können ein Add-In aktivieren, indem Sie verschiedene Anwendungsdomänen- und Prozesskonfigurationen verwenden, die sich für Ihre Isolations- und Sicherheitsanforderungen eignen. Die Activate-Methodenüberladungen der AddInToken-Klasse stellen die folgenden Auswahlmöglichkeiten zum Aktivieren eines Add-Ins bereit:
In der Anwendungsdomäne des Add-Ins, die automatisch vom System generiert wird.
In einer vorhandenen Anwendungsdomäne mit oder ohne andere Add-Ins.
In derselben Umgebung (Anwendungsdomäne und Prozess) wie ein anderes Add-In.
In einem neuen, externen Prozess, der vom Prozess des Hosts getrennt ist. Der neue Prozess kann andere Add-Ins enthalten, die den Prozess ebenfalls nutzen.
Wenn Sie ein Add-In in einer neuen Anwendungsdomäne oder einem neuen Prozess aktivieren, müssen Sie eine Sicherheitsstufe mit einem AddInSecurityLevel-Objekt oder einem PermissionSet-Objekt angeben. Weitere Informationen zum Aktivieren von Add-Ins finden Sie unter Add-In-Aktivierung.
Die folgenden Verfahren verdeutlichen, wie diese Aktivierungsoptionen mit den Activate-Methodenüberladungen implementiert werden. In den Beispielen wird davon ausgegangen, dass das Pipelinesegment und Add-In-Caches erstellt wurden und dass ein oder mehrere Add-Ins gefunden und in einer AddInToken-Auflistung mit der Bezeichnung tokens zurückgegeben wurden. Weitere Informationen zum Erstellen der Cachedateien und zum Suchen von Add-Ins finden Sie unter Ermitteln von Add-Ins.
So aktivieren Sie ein Add-In in einer neuen Anwendungsdomäne
Verwenden Sie die Activate<T>(AddInSecurityLevel)-Methodenüberladung oder die Activate<T>(PermissionSet)-Methodenüberladung.
'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);
So aktivieren Sie ein Add-In in derselben Anwendungsdomäne wie ein anderes Add-In
Verwenden Sie die Activate<T>(AppDomain)-Methodenüberladung.
' Get the application domain ' of an existing add-in (CalcAddIn). Dim aiCtrl As AddInController = AddInController.GetAddInController(CalcAddIn) Dim AddInAppDom As AppDomain = aiCtrl.AppDomain ' Activate another add-in in the same appliation domain. Dim CalcAddIn3 As Calculator = selectedToken2.Activate(Of Calculator)(AddInAppDom) ' Show that the CalcAddIn3 was loaded ' into CalcCaddIn's application domain. Dim aic As AddInController = AddInController.GetAddInController(CalcAddIn3) Console.WriteLine("Add-in loaded into existing application domain: {0}", _ aic.AppDomain.Equals(AddInAppDom))// Get the application domain // of an existing add-in (CalcAddIn). AddInController aiCtrl = AddInController.GetAddInController(CalcAddIn); AppDomain AddInAppDom = aiCtrl.AppDomain; // Activate another add-in in the same application domain. Calculator CalcAddIn3 = selectedToken2.Activate<Calculator>(AddInAppDom); // Show that CalcAddIn3 was loaded // into CalcAddIn's application domain. AddInController aic = AddInController.GetAddInController(CalcAddIn3); Console.WriteLine("Add-in loaded into existing application domain: {0}", aic.AppDomain.Equals(AddInAppDom));
So aktivieren Sie ein Add-In in derselben Anwendungsdomäne und in demselben Prozess wie ein anderes Add-In
Verwenden Sie die Activate<T>(AddInEnvironment)-Methodenüberladung.
' Get the AddInController of a ' currently activated add-in (CalcAddIn). Dim aiController As AddInController = AddInController.GetAddInController(CalcAddIn) ' Select another token. Dim selectedToken2 As AddInToken = ChooseAddIn(tokens) ' Activate a second add-in, CalcAddIn2, in the same ' appliation domain and process as the first add-in by passing ' the first add-in's AddInEnvironment object to the Activate method. Dim aiEnvironment As AddInEnvironment = aiController.AddInEnvironment Dim CalcAddIn2 As Calculator = _ selectedToken2.Activate(Of Calculator)(aiEnvironment) ' Get the AddInController for the second add-in to compare environments. Dim aiController2 As AddInController = AddInController.GetAddInController(CalcAddIn2) Console.WriteLine("Add-ins in same application domain: {0}", _ aiController.AppDomain.Equals(aiController2.AppDomain)) Console.WriteLine("Add-ins in same process: {0}", _ aiEnvironment.Process.Equals(aiController2.AddInEnvironment.Process))// Get the AddInController of a // currently actived add-in (CalcAddIn). AddInController aiController = AddInController.GetAddInController(CalcAddIn); // Select another token. AddInToken selectedToken2 = ChooseAddIn(tokens); // Activate a second add-in, CalcAddIn2, in the same // appliation domain and process as the first add-in by passing // the first add-in's AddInEnvironment object to the Activate method. AddInEnvironment aiEnvironment = aiController.AddInEnvironment; Calculator CalcAddIn2 = selectedToken2.Activate<Calculator>(aiEnvironment); // Get the AddInController for the second add-in to compare environments. AddInController aiController2 = AddInController.GetAddInController(CalcAddIn2); Console.WriteLine("Add-ins in same application domain: {0}", aiController.AppDomain.Equals(aiController2.AppDomain)); Console.WriteLine("Add-ins in same process: {0}", aiEnvironment.Process.Equals(aiController2.AddInEnvironment.Process));
So aktivieren Sie ein Add-In in einem neuen Prozess
Verwenden Sie die Activate<T>(AddInProcess, AddInSecurityLevel)-Methodenüberladung oder die Activate<T>(AddInProcess, PermissionSet)-Methodenüberladung.
' Create an external process. Dim pExternal As New AddInProcess() ' Activate an add-in in the external process ' with a full trust security level. Dim CalcAddIn4 As Calculator = _ selectedToken.Activate(Of Calculator)(pExternal, _ AddInSecurityLevel.FullTrust) ' Show that the add-in is an an external process ' by verifying that it is not in the current (host's) process. Dim AddinCtl As AddInController = AddInController.GetAddInController(CalcAddIn4) Console.WriteLine("Add-in in host's process: {0}", _ AddinCtl.AddInEnvironment.Process.IsCurrentProcess)// Create an external process. AddInProcess pExternal = new AddInProcess(); // Activate an add-in in the external process // with a full trust security level. Calculator CalcAddIn4 = selectedToken.Activate<Calculator>(pExternal, AddInSecurityLevel.FullTrust); // Show that the add-in is an an external process // by verifying that it is not in the current (host's) process. AddInController AddinCtl = AddInController.GetAddInController(CalcAddIn4); Console.WriteLine("Add-in in host's process: {0}", AddinCtl.AddInEnvironment.Process.IsCurrentProcess);