Как работает Excel VSTO?

Как работает Excel VSTO? Если я создам решение для рабочей книги Excel в Visual Studio 2005, я смогу спокойно писать код с полным доступом к объектной модели Excel и даже рассматривать лист Excel как рабочую область. Когда я создаю решение, я получаю файл .XLS и файл .DLL (содержащий мой код C#).

Теперь я могу запустить лист Excel, просто дважды щелкнув на .XLS, и мой лист работает со всем моим кодом C # и любыми элементами управления, которые я поместил на лист и т. д.

Как лист ссылается на .DLL? Какая часть книги/листа excel сообщает, что ей нужно запустить CLR и разместить мою сборку?


person ng5000    schedule 11.02.2009    source источник


Ответы (2)


Согласно этому (спасибо PintSizedCat) для Excel 2003 происходит следующее:

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

При наличии расширений управляемого кода приложение загружает AddinLoader.dll. Это неуправляемая библиотека DLL, которая является компонентом загрузчика для среды выполнения Visual Studio 2005 Tools for Office Second Edition. Дополнительные сведения см. в разделе Обзор инструментов Visual Studio для среды выполнения Office.

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

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

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

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

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

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

В книге Excel моего тестового проекта у меня есть два настраиваемых свойства:

_AssemblyName, значение = * _AssemblyLocation, значение = {533b2c13-a125-418a-bfff-9546b0762807}

Я предполагаю, что это свойства, которые направляют среду выполнения VSTO на мою сборку.

person ng5000    schedule 11.02.2009

Все это делается в реестре, вы сможете найти ключ в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel или эквивалентном приложении. У меня больше опыта работы с надстройками COM, которые также зарегистрированы где-то еще в реестре. Под этим ключом должен быть элемент LoadBehaviour, который используется для определения способа загрузки приложения (2 — загрузка вручную, 3 — автоматическая загрузка при запуске).

У вас есть проект установки для вашего VSTO? Внутри вы можете увидеть установленный раздел реестра, но программа установки также зарегистрирует/должна зарегистрировать VSTO в GAC (хотя не верьте мне на слово, поскольку я немного шатаюсь с VSTO, как я уже сказал).

Надеюсь, это поможет, я постараюсь найти для вас дополнительную информацию.

Изменить. Вы должны попробовать прочитать следующее http://msdn.microsoft.com/en-us/library/bb386298.aspx, который даст вам объяснение того, что такое надстройка. На самом деле это просто оболочка для хоста COM, который загружается из реестра, и VSTO взаимодействует с ним, используя некоторый код взаимодействия.

Также полезны http://msdn.microsoft.com/en-us/library/23cw517s.aspx (Начало работы с инструментами Visual Studio для Office, не стучите по нему, потому что там написано Начало работы, там много полезной информации) и http://msdn.microsoft.com/en-us/library/hy7c6z9k.aspx (ссылка с первого и представляет собой обзор надстроек VSTO).

person Henry B    schedule 11.02.2009
comment
Я посмотрел под ключом reg, и там нет ничего для моего проекта VSTO .Net (есть подкаталог «Addins» с двумя другими надстройками). У меня еще нет проекта установки для моего VSTO. - person ng5000; 11.02.2009
comment
Это может быть под HKEY_CURRENT_USER - person Henry B; 11.02.2009