Поделиться через


Архитектура надстроек уровня приложения

Обновлен: Ноябрь 2007

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office.

Тип проекта

  • Проекты уровня приложения

Версия Microsoft Office

  • Выпуск системы Microsoft Office 2007

  • Microsoft Office 2003

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

Надстройки, которые создаются с использованием Visual Studio Tools for Office, обладают архитектурными особенностями, подчеркивающими стабильность и безопасность, а также позволяющими тесно взаимодействовать с Microsoft Office. В этом разделе описываются следующие аспекты надстроек Visual Studio Tools for Office:

  • Основные сведения о надстройках

  • Компоненты надстроек

  • Особенности работы надстроек в системе Microsoft Office 2007

  • Особенности работы надстроек в системе Microsoft Office 2003

  • Поведение надстроек при завершении работы Outlook 2003

Дополнительные сведения об использовании надстроек Visual Studio Tools for Office см. в разделах Общие сведения о разработке решений Office и Приступая к программированию надстроек на уровне приложения.

Основные сведения о надстройках

При построении надстройки с помощью Visual Studio Tools for Office создается управляемый код сборки, загружаемый приложением Microsoft Office. После загрузки сборки надстройка может использоваться для обработки событий, возникающих в приложении (например, при выборе пункта меню). В надстройке также поддерживается обращение к объектной модели и любым классам .NET Framework, что позволяет автоматизировать и расширить функциональные возможности приложения.

Сборка взаимодействует с COM-компонентами приложения посредством основной сборки взаимодействия приложения. Дополнительные сведения см. в разделах Основные сборки взаимодействия Office и Общие сведения о разработке решений Office.

Visual Studio Tools for Office загружает каждую надстройку в отдельный домен приложения. Это означает, что некорректное поведение одной надстройки не приведет к неудачному завершению других надстроек. Это также гарантирует, что при закрытии приложения код завершает работу и сборки выгружаются из памяти. Дополнительные сведения о доменах приложений см. в разделе Общие сведения о доменах приложений.

Bb386298.alert_note(ru-ru,VS.90).gifПримечание.

Надстройки, создаваемые с помощью Visual Studio Tools for Office, разработаны для использования только при запуске приложения Microsoft Office конечным пользователем. Если приложение запускается программным способом (например, с помощью автоматизации), надстройка может не работать как ожидалось.

Компоненты надстроек

Несмотря на то, что сборка надстроек является основным компонентом, существует несколько других компонентов, играющих важную роль в процессах обнаружения и загрузки надстроек приложениями Microsoft Office.

Разделы реестра

Нахождение надстроек приложениями Microsoft Office осуществляется при поиске набора записей реестра. Большинство записей реестра одинаковы для версий Microsoft Office 2003 и 2007, однако, один ключ имеет отличия.

  • Приложения в системе Microsoft Office 2007 осуществляют поиск записи Manifest в разделах HKEY_CURRENT_USER\Software\Microsoft\Office\имя приложения\Addins\идентификатор надстройки (или HKEY_CURRENT_USER\Software\Microsoft\Visio\Addins\идентификатор надстройки для Visio). Запись Manifest указывает полный путь манифеста развертывания.

  • Приложения Microsoft Office 2003 осуществляют поиск записей ManifestName и ManifestLocationв разделах HKEY_CURRENT_USER\Software\Microsoft\Office\имя приложения\Addins\идентификатор надстройки (или HKEY_CURRENT_USER\Software\Microsoft\Visio\Addins\идентификатор надстройки для Visio). Эти записи указывают имя и расположение манифеста приложения.

При построении решения Visual Studio Tools for Office создает все обязательные записи реестра на компьютере разработчика, упрощая отладку и запуск надстройки. Дополнительные сведения см. в разделе Общие сведения о процессе построения решений Office

Полный список записей реестра, используемых надстройками, см. в разделе Записи реестра для надстроек уровня приложения.

Bb386298.alert_note(ru-ru,VS.90).gifПримечание.

Надстройку Visual Studio Tools for Office для Microsoft Office 2003 можно сделать доступной для всех пользователей компьютера, создав раздел реестра в HKEY_LOCAL_MACHINE, а не в HKEY_CURRENT_USER. Однако нельзя развернуть надстройку Visual Studio Tools for Office системы Microsoft Office 2007 для всех пользователей компьютера, регистрируя ее в разделе HKEY_LOCAL_MACHINE. Приложения выпуска 2007 системы Microsoft Office опознают только те надстройки Visual Studio Tools for Office, которые зарегистрированы в разделе HKEY_CURRENT_USER.

Манифест развертывания и манифест приложения

Надстройки используют манифесты развертывания и манифесты приложения для идентификации и загрузки самой свежей версии сборки надстройки. Манифест развертывания указывает на текущий манифест приложения. Манифест приложения указывает на сборку надстройки и задает класс точки входа для выполнения в сборке. Дополнительные сведения см. в разделе Манифесты приложения и развертывания в решениях Office.

Инструменты Visual Studio для среды выполнения Office

Чтобы выполнить надстройки, созданные с помощью Visual Studio Tools for Office, на компьютере конечного пользователя должна быть установлена среда выполнения Visual Studio Tools for Office. Среда выполнения включает в себя неуправляемые компоненты и набор управляемых сборок. Неуправляемые компоненты загружают сборку надстройки. Управляемые сборки предоставляют объектную модель, которую код надстройки использует для автоматизации и расширения возможностей ведущего приложения.

Дополнительные сведения см. в разделе Общие сведения об инструментах Visual Studio для среды выполнения Office.

Особенности работы надстроек в системе Microsoft Office 2007

При запуске в системе Microsoft Office 2007 приложение использует манифест развертывания и манифест приложения для размещения и загрузки последней версии сборки надстройки. На рисунке ниже показана основная архитектура этих надстроек.

Архитектура надстроек в системе Microsoft Office 2007
Архитектура надстройки Office 2007

Процесс загрузки

При запуске приложения происходит следующее.

  1. Приложение проверяет реестр на наличие записей, идентифицирующих надстройки, созданные с помощью Visual Studio Tools for Office.

  2. Если записи реестра обнаруживаются, приложение загружает файл VSTOEE.dll, который, в свою очередь, загружает файл VSTOLoader.dll. Эти файлы представляют неуправляемые библиотеки DLL, являющиеся компонентами загрузчика для среды Visual Studio Tools for Office, версия 3.0 (cреда выполнения). Дополнительные сведения см. в разделе Общие сведения об инструментах Visual Studio для среды выполнения Office.

  3. VSTOLoader.dll загружает .NET Framework и запускает управляемую часть среды выполнения Visual Studio Tools for Office.

  4. Среда выполнения Visual Studio Tools for Office проверяет наличие обновлений и производит загрузку недавних приложений и манифестов развертывания.

  5. Среда выполнения Visual Studio Tools for Office производит серию проверок безопасности. Дополнительные сведения см. в разделе Безопасность в решениях Office (система 2007).

  6. Если надстройка имеет необходимый для выполнения уровень доверия, то среда выполнения Visual Studio Tools for Office использует манифест развертывания и манифест приложения для поиска обновлений сборки. Если новая версия сборки доступна, то среда выполнения загружает эту новую версию сборки в кэш ClickOnce на клиентском компьютере. Дополнительные сведения см. в разделе Развертывание решений Office (система 2007).

  7. Среда выполнения Visual Studio Tools for Office создает новый домен приложения для загрузки сборки надстройки.

  8. Среда выполнения Visual Studio Tools for Office загружает сборку надстройки в домен приложения.

  9. Среда выполнения Visual Studio Tools for Office вызывает метод RequestComAddInAutomationService в надстройке в случае выполнения переопределения.

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

  10. Среда выполнения Visual Studio Tools for Office вызывает метод RequestService в надстройке в случае выполнения переопределения.

    Для расширения возможностей системы Microsoft Office 2007 можно переопределить данный метод, возвращая объект, реализующий интерфейс расширения. Дополнительные сведения см. в разделе Настройка функций пользовательского интерфейса с помощью интерфейсов расширяемости.

  11. Среда выполнения Visual Studio Tools for Office вызывает метод ThisAddIn_Startup в надстройке. Этот метод является обработчиком события Startup по умолчанию. Дополнительные сведения см. в разделе Инструменты Visual Studio для событий проекта Office.

Bb386298.alert_note(ru-ru,VS.90).gifПримечание.

Среда выполнения Visual Studio Tools for Office производит отдельные вызовы метода RequestService для каждого интерфейса расширения, поддерживаемого ведущим приложением. Несмотря на то, что первый вызов метода RequestService обычно предшествует вызову метода ThisAddIn_Startup, надстройка может не делать предположений по поводу времени и количества вызовов метода RequestService.

Особенности работы надстроек в системе Microsoft Office 2003

При запуске приложения Microsoft Office приложение использует информацию в манифесте (и, при необходимости, в манифесте развертывания) для загрузки сборки надстройки. На следующих рисунках показана основная архитектура надстройки для приложения Microsoft Office 2003.

Архитектура надстроек в Microsoft Office 2003
Архитектура надстройки Office 2003

Процесс загрузки

При запуске приложения происходит следующее.

  1. Приложение проверяет реестр на наличие записей, идентифицирующих надстройки, созданные с помощью Visual Studio Tools for Office.

  2. Если записи реестра обнаруживаются, приложение загружает файл VSTOEE.dll, который, в свою очередь, загружает файл AddinLoader.dll. Эти файлы представляют неуправляемые библиотеки DLL, являющиеся компонентами загрузчика для Visual Studio 2005 Tools for Office Second Edition (среда выполнения). Дополнительные сведения см. в разделе Общие сведения об инструментах Visual Studio для среды выполнения Office.

  3. AddinLoader.dll загружает .NET Framework и запускает управляемую часть среды выполнения Visual Studio Tools for Office.

  4. Среда выполнения Visual Studio Tools for Office создает новый домен приложения, задает для него политику на отказ в доверии зоне "Мой компьютер" и проверяет место хранения политики управления доступом для кода, чтобы найти политику для этой сборки надстройки.

  5. .NET Framework проверяет свидетельство, представляемое сборкой, на соответствие политике домена приложения. Если свидетельство не соответствует, вызывается ошибка. Если свидетельство проходит, процесс продолжается.

  6. Если надстройка имеет манифест развертывания, то среда выполнения Visual Studio Tools for Office использует его для проверки наличия обновлений сборки. Если обновлений нет — начинается выполнение.

  7. Среда выполнения Visual Studio Tools for Office загружает сборку надстройки в новый домен приложения.

  8. Среда выполнения Visual Studio Tools for Office вызывает метод RequestComAddInAutomationService в надстройке в случае выполнения переопределения.

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

  9. Среда выполнения Visual Studio Tools for Office вызывает метод ThisAddIn_Startup в надстройке. Этот метод является обработчиком события Startup по умолчанию. Дополнительные сведения см. в разделе Инструменты Visual Studio для событий проекта Office.

Поведение надстроек при завершении работы Outlook 2003

В случае миграции существующей надстройки COM Outlook 2003 (являющейся надстройкой, которая непосредственно реализует интерфейс IDTExtensibility2) в Visual Studio Tools for Office, удалите код, предназначенный для работы при потенциальных проблемах выключения. В противном случае этот код может конфликтовать с процессом завершения работы надстроек в Outlook 2003, созданных с помощью Visual Studio Tools for Office, или же возникнет преждевременная выгрузка надстройки.

Bb386298.alert_note(ru-ru,VS.90).gifПримечание.

Поведение, описанное в данном разделе не относится к надстройкам Outlook 2007. Outlook 2007 всегда вызывает метод OnDisconnection в надстройке, даже если надстройка имеет ссылки на другие объекты Outlook.

Предпосылки проблем выключения

До тех пор пока в надстройке COM есть ссылки на один или несколько объектов Outlook, Outlook 2003 не вызывает метод OnDisconnection в надстройке. Если надстройка имеет ссылки на объекты, очищающиеся только в методе OnDisconnection, Outlook 2003 никогда не вызывает метод OnDisconnection. В результате выгрузка надстройки не происходит и Outlook 2003 не завершает работу.

Практическое руководство. Решение проблем выключения с помощью инструментальных средств Visual Studio для работы с пакетом Office

Способ выгрузки надстроек Outlook 2003, созданных с помощью Visual Studio Tools for Office, препятствует возникновению подобной проблемы. Среда выполнения Visual Studio Tools for Office генерирует событие Shutdown надстройки и выгружает домен приложения надстройки, если надстройка не имеет ссылок на Explorer или объекты Inspector, в следующих случаях.

  • Вызывается метод Quit.

  • Возникает событие Close объекта Explorer или Inspector.

При выгрузке домена приложения все невыполненные ссылки на другие объекты Outlook очищаются. После этого Outlook 2003 может завершить работу надстройки и закрыть приложение.

См. также

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

Архитектура настроек на уровне документа

Общие сведения об инструментах Visual Studio для среды выполнения Office

Программирование надстроек уровня приложения

Разработка решений Office

Другие ресурсы

Архитектура средств Visual Studio для решений Office

Безопасность в решениях Office

Развертывание решений Office