Как работает Excel VSTO? - PullRequest
       12

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

8 голосов
/ 11 февраля 2009

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

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

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

Ответы [ 2 ]

7 голосов
/ 11 февраля 2009

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

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

Если существуют управляемые расширения кода, приложение загружает AddinLoader.dll. Это неуправляемая DLL, которая является компонент загрузчика для Visual Studio Инструменты 2005 года для второго издания Office во время выполнения. Для получения дополнительной информации см. Инструменты Visual Studio для Office Runtime Обзор.

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

Инструменты Visual Studio для Office среда выполнения создает домен приложения, устанавливает политику для домена приложения не доверять Моей компьютерной зоне, и проверяет политику безопасности доступа к коду магазин, чтобы найти политику для сборка под заказ.

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

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

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

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

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

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

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

6 голосов
/ 11 февраля 2009

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

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

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

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

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

...