Активация надстройки

После использования методов обнаружения и получения коллекции маркеров надстроек для указанного представления основного приложения можно активировать надстройку из коллекции, используя ее маркер, который представлен объектом AddInToken. Дополнительные сведения о способах обнаружения надстроек, доступных в системе, см. в разделе Обнаружение надстройки.

При использовании перегрузок метода Activate для объекта AddInToken можно указать следующие параметры активации:

  • Домен приложения, в который загружается надстройка.

  • Уровень доверия безопасности или набор разрешений, который предоставляется домену приложения, который создан для надстройки.

  • Внешний процесс, в котором нужно активировать надстройку. Это дополнительный параметр разработки надстройки.

Метод Activate возвращает представление основного приложения, относящееся к надстройке. Затем основное приложение может вызывать метод, как указано в контракте. Основное приложение может управлять жизненным циклом надстройки путем завершения ее работы с помощью класса AddInController. Также оно может разрешить получения надстройки сборщиком мусора, если на эту надстройку не осталось ссылок.

Активация

Как правило, основные приложения и надстройки работают в разных доменах приложения, и на каждую надстройку приходится один домен приложения. Это позволяет надстройкам работать в контекстах, изолированных как от основного приложения, так и от других надстроек. Изоляция предотвращает конфликты и разрешает использование версий надстроек.

Так как надстройка находится в собственном домене приложения, можно проверить ее в собственной среде, а также проверить соответствующую сторону конвейера. Адаптер надстройки, контракт и сегменты конвейера в представлении надстройки загружаются в тот же домен приложения, что и сама надстройка. Все прочие сборки, требуемые надстройкой, также загружается в домен приложения надстройки.

При активации надстроек основное приложение, как правило, использует перегрузку метода Activate, которая принимает определенный уровень безопасности и автоматически создает домен приложения для надстройки. Можно указать AddInSecurityLevel или PermissionSet для уровня безопасности. Когда метод Activate создает домен приложения для надстройки, он задает имя файла конфигурации домена приложения в виде addinassemblyname.config, если такой файл конфигурации существует.

Для более точного управления или для размещения надстроек в пул, можно использовать перегрузки метода AddInToken.Activate, чтобы указать существующий домен приложения для загрузки надстроек. Если указать существующий домен приложения, можно без труда использовать ресурсы, контексты безопасности и сведения о языке и региональных параметрах совместно с другими приложениями.

Следует учесть контекст безопасности, который будет применяться к домену приложения надстройки. Например, основное приложение может работать при полном доверии и нуждаться в запуске надстроек с более низким уровнем разрешений. Можно использовать перегрузки метода Activate для указания зоны безопасности с перечислением AddInSecurityLevel. Эти зоны безопасности включают FullTrust, Host, Intranet или Internet. Допустимые разрешения для зоны безопасности применяются к коду, который выполняется в домене приложения. Разрешения, доступные для этих зон безопасности, зависят от параметров безопасности .NET Framework.

Если не следует использовать разрешения для зоны безопасности, можно использовать перегрузи метода the Activate для предоставления собственного объекта PermissionSet.

Можно использовать перегрузки метода Activate для создания внешнего процесса для надстройки, чтобы присоединить надстройку к существующему внешнему процессу, предназначенному для размещения надстроек. Эти перегрузки используют классы AddInProcess и AddInEnvironment. Дополнительные сведения об активации надстроек во внешнем процессе см. в разделе Практическое руководство. Активация надстроек с другими уровнями изоляции и безопасности.

Управление жизненным циклом надстройки

Класс 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);

См. также

Задачи

Практическое руководство. Активация надстроек с другими уровнями изоляции и безопасности

Основные понятия

Надстройки и расширения среды

Обнаружение надстройки

Управление жизненным циклом объекта

Контракты, представления и адаптеры