Как повысить производительность холодного запуска для надстройки VSTO2SE MS Office?

Если вы создаете простую надстройку VSTO2SE «Hello World», предназначенную для Microsoft Office Excel 2003, при «холодном» запуске требуется 15 секунд для загрузки. В это время Excel полностью не отвечает.

Время холодного запуска в Excel 2003 всегда невелико. Я видел одну тестовую машину, на которой время запуска в Excel 2007 было мгновенным, но всем моим другим тестовым машинам требуется 15 секунд для инициализации. (тестовая среда - Windows XP Pro + среда выполнения VSTO2SE + XP SP3)

Как можно улучшить эту производительность?

Вещи, которые я уже пробовал без успеха:

  1. Отключите проверку CRL (списка отозванных сертификатов) - это, похоже, не помогает, плюс я не могу ожидать, что пользователи будут делать это.

  2. Используйте NGEN для создания собственных сборок.
    а) Похоже, что Office 2003 никогда не использует собственные сборки. b) Мой тестовый клиент Office 2007, который запускается быстро, делает это даже со сборками IL. c) Даже если я создаю все дерево зависимостей, все еще есть зависимости VSTO, которые могут не иметь собственных образов.

  3. Отложить загрузку надстройки — это обходной путь, который я получаю от Microsoft. Дело в том, что моя надстройка запускается из пункта меню - как я могу отложить загрузку надстройки и при этом получить свое меню? Я мог бы использовать надстройку VB6 для рисования меню и переадресации вызовов через взаимодействие, но тогда зачем вообще писать надстройку VSTO?

Изменить. Да, это единственная строка в событии «соединение» в надстройке. (на самом деле окно сообщения).. Прежде чем появится окно сообщения, проходит полных 15 секунд. - Джей Дэвис


person J Davis    schedule 29.10.2008    source источник


Ответы (2)


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

Если теплый запуск происходит значительно быстрее, то единственными реальными вариантами, которые у вас есть, являются

1) Загрузить отдельную программу при запуске Windows и загрузить все сборки для вашей надстройки r в фоновом режиме.

2) Постарайтесь уменьшить количество используемых вами сборок. Конечно, вы не должны много использовать с Hello World.

3) Предварительно загрузите все при запуске Excel. Это сократит время запуска Excel, но ускорит выбор меню. Вы также можете предварительно загрузить все в фоновом режиме, чтобы помочь этому.

person Jacob Adams    schedule 05.12.2008
comment
# 1 - сборки должны быть загружены в домен приложения Excel? # 2 - Да # 3 - VSTO не дает вам слишком много вариантов ... Моя проблема заключается в том, что при запуске Excel он просто зависает, поскольку он уже показал пользовательский интерфейс, но затем зависает при загрузке сборок. Плохая Microsoft... Плохая. Плохой. :) - person J Davis; 05.01.2009

Вы проверили, что такое фактическое ограбление? Если вы поместите инструкцию Debug.Write() в качестве первой строки в надстройку VSTO, потребуется ли 15 секунд, чтобы отобразиться в окне отладки?

Мы работаем с VSTO, и всякий раз, когда у нас возникают задержки, замедление обычно происходит не из-за реальной среды выполнения, а из-за чего-то еще. Мы решили эту проблему, выделив фоновые потоки для выполнения медленных задач, не блокируя при этом основной поток, который тормозит запуск Excel.

пс. Мы также не большие поклонники технологии VSTO. Мы на 100% верим в наше видение, но реализация оставляет желать лучшего.

person Paul Prewett    schedule 29.10.2008
comment
Да, это единственная строка в событии подключения в надстройке. (на самом деле окно сообщения).. Прежде чем появится окно сообщения, проходит полных 15 секунд. - person J Davis; 30.10.2008