Как я могу улучшить производительность холодного запуска для надстройки MS Office VSTO2SE? - PullRequest
4 голосов
/ 30 октября 2008

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

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

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 05 декабря 2008

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

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

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

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

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

0 голосов
/ 30 октября 2008

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

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

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

...