Как решить проблему с надстройкой VSTO, которая не загружается? - PullRequest
70 голосов
/ 12 января 2011

Моя надстройка VSTO Outlook внезапно перестала работать на одном клиентском компьютере (он не загружается, нет сообщения об ошибке), и я застрял с устранением неполадок. На компьютере установлена ​​Windows 7 x86, Outlook 2007. Надстройка написана для Visual Studio 2008 и использует VSTO 2005 с PIA 2003 (поскольку нам также необходима поддержка Outlook 2003). Он отлично работает на других машинах.

Вот что я попытался получить полезный вывод для устранения неполадок:

Ничего. Надстройка просто не будет загружаться без указания любой причины. Я также проверил «обычных подозреваемых» (политика CAS, установленные PIA, LoadBehavior в реестре, переустановка VSTO и надстройки).

Некоторые другие наблюдения:

  • LoadBehavior в реестре остается на 3.
  • Надстройка отображается в Outlook как «отключенная». Установка флажка в «Надстройках COM» ничего не делает (без ошибок, флажок снова сбрасывается при повторном вводе формы).
  • Он отлично работает на других клиентских машинах и прекрасно работает на этой машине. (Нет, клиент не может сказать мне, что изменилось на его машине.)
  • У меня есть сообщение Trace.WriteLine в самом верху моего кода (первая строка в обработчике ThisAddIn_Startup), которое не достигается (я проверял с помощью DebugView ). Таким образом, причина не загрузки - не исключение в моей надстройке, а скорее сбой VSTO для загрузки надстройки или Outlook для загрузки VSTO.

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

Ответы [ 7 ]

53 голосов
/ 14 января 2011

Вот немного подробнее о решении RobertG5 (слишком долго для комментария):

Проблема заключалась в том, что надстройка была жестко отключена Outlook. Как я узнал, это нечто иное, чем «обычный» сценарий без загрузки. Ключ к пониманию этого состоял в том, чтобы заметить, что надстройка не отображается под Неактивные надстройки приложений , а под Отключенные надстройки приложений . Это имеет значение: в последнем случае просто перейти к экрану COM-AddIn и установить флажок просто ничего не делает. (Полагаю, что красивое окно сообщения «Вы не можете загрузить эту надстройку, потому что она была жестко отключена», было бы слишком большим вопросом ... вздох .)

Итак, как мне повторно включить жестко отключенную надстройку?

  1. В поле Управление измените Надстройки COM на Отключенные надстройки и нажмите кнопку Перейти.
  2. Выберите надстройку и нажмите Включить . Нажмите Закрыть .

ОК, теперь надстройка может быть загружена снова:

  1. В поле Управление измените Отключенные надстройки на Надстройки COM и нажмите кнопку Перейти.
  2. установите флажок рядом с отключенной надстройкой. Нажмите OK .

Ссылка: http://msdn.microsoft.com/en-us/library/ms268871.aspx

51 голосов
/ 13 января 2011

Вы пытались снова включить надстройку?Он не запустится после того, как находится в отключенной очереди.После того, как вы снова включите его с экрана отключенной надстройки, вы можете установить флажок на экране COM-AddIn, чтобы он загрузился, что затем должно подсказать вам больше подробностей, поскольку вы устанавливаете переменную VSTO_SUPPRESSDISPLAYALERTS о том, что могло произойтиво-первых.

42 голосов
/ 05 февраля 2013

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

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

1). Надстройка не загружена.

Не загружен. Произошла ошибка во время загрузки надстройки COM.

enter image description here

Проблема связана с отсутствием .Net Framework 3.5 или 4.0.

Примечание: на x64 мне нужен только .Net 4.0, однако на x86 ПК я получил ошибку после установки .Net 4.0. После этой статьи я также установил .Net 3.5, и тогда он работал на ПК x86!

2). Надстройка не загружена.

Дважды проверьте правильность написания ключей реестра. Иногда я печатаю «Поведение», но в американском правописании это «Поведение», поэтому дважды проверьте «LoadBehavior»

enter image description here

Также убедитесь, что «LoadBehavior» равен 3, список значений см. http://msdn.microsoft.com/en-us/library/vstudio/bb386106.aspx#LoadBehavior

3). Надстройка не видна.

Вы можете сделать надстройку видимой, перейдя в Excel> Файл> Параметры> Надстройки>, выберите раскрывающийся список Управление и установите для него Надстройки COM> Нажмите GO. В диалоговом окне Надстройки COM убедитесь, что Надстройка отмечена.

4). Надстройка была отключена.

Кроме того, надстройка может быть скрыта, поскольку она отключена. Вы можете включить надстройку, перейдя в Excel> Файл> Параметры> Надстройки>, выберите раскрывающийся список Управление, установите его Отключено и нажмите GO. Выберите надстройку, которая была отключена, и нажмите «Включить».

enter image description here

5). Определенная пользователем формула ExcelDNA отображает неправильно

Вместо того, чтобы видеть значение ячейки, вы видите: #NAME?

Установите следующий ключ реестра:

        HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\options\OPEN:

При правильном значении:

        /R "C:\Program Files\XYZ\XYZ Addin\ExcelDNA.XYZAddIn.xll"

6). Excel вешает после отображения окна сообщения

Включите настройки приложения:

        xlApp.ScreenUpdating = true;
        xlApp.DisplayAlerts = true;
        xlApp.Calculation = XlCalculation.xlCalculationAutomatic;
        xlApp.UserControl = true;
        xlApp.EnableEvents = true;

7). Дальнейшее устранение неисправностей

Включите файл журнала VSTO, добавив следующее в системные переменные среды:

NAME: VSTO_LOGALERTS
VALUE: 1

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

Вы можете проверить этот источник для получения дополнительной информации о регистрации и оповещениях VSTO, но по сути вы меняете два значения переменных среды в зависимости от того, что вам нужно сделать:

Отображение предупреждений VSTO

Чтобы отобразить каждую ошибку в окне сообщения, установите Переменная VSTO_SUPPRESSDISPLAYALERTS в 0 (ноль). Вы можете подавить сообщения, установив переменную в 1 (один).

Регистрация предупреждений VSTO в файле журнала

Чтобы записать ошибки в файл журнала, установите переменную VSTO_LOGALERTS до 1 (одного).

Visual Studio Tools for Office создает файл журнала в папке, содержит манифест приложения Имя по умолчанию .manifest.log. Чтобы прекратить регистрировать ошибки, установите для переменной значение 0 (ноль).

7 голосов
/ 23 мая 2013

Я бы предложил использовать инструмент Microsoft для диагностики проблем с надстройками, который называется AddinSpy .

1 голос
/ 26 октября 2016

Существует также другая возможность, почему вы не получаете обратной связи даже с установленными выше переменными среды.Я обнаружил, что если вы получаете эту ошибку после установки (а не предыдущей VSTO, которая работала), вам также следует дважды проверить реестр и запись "Manifest" , если она у вас есть.

В то время как Джереми Томпсон указывает на Реестр в своем втором пункте, он не отображает запись Манифест , которая может быть частью настроек вашего реестра.Если ваша запись в манифесте не указывает на правильный путь и файл, она будет отображаться в списке надстроек с записью «Не загружено» .

Здесь мы видим неправильную записьэто только указывает на файл VSTO, без пути.enter image description here

Это приведет к тому, что ваш аддин будет выглядеть так, как будто он загружен ошибками, но никаких ошибок не появляется и не появляется для вас, что вызывает разочарование.Так что это будет выглядеть ниже, обратите внимание на то, что запись о расположении ниже также не показывает путь.enter image description here

Исправьте запись, указав правильный путь вместе с именем файла, и это исправит это.

Отсутствие ошибок, как я полагаю, связано с тем, что вы изначально ни на что не указывали, поэтому он перечисляет AddIn, потому что он находится в реестре, хотя загружать нечего.

1 голос
/ 11 октября 2016

Забавно для меня, я попробовал перезагрузку.Исправил это для меня.Однако причина, по которой он это исправил, заключается в том, что у меня был скрытый мошеннический файл Excel.exe.Надстройка не запускалась из-за запуска этого другого приложения Excel (я переносил приложение MSAccess в VSTO), поэтому в Access было открыто скрытое приложение автоматизации.

Короче говоря, если ваше дополнение не запускается, быстропроверить это просто убедиться, что другие приложения Excel не запущены.Это, конечно, применимо, только если вы пытаетесь установить / запустить совершенно новый.

(я использовал эту ссылку) https://www.add -in-express.com / creation-addins-blog / 2012/11/13 / Wix-установка-VSTO-офис надстройке /

0 голосов
/ 08 мая 2016

В конце концов я уговорил Word сказать мне:

    Microsoft.VisualStudio.Tools.Applications.Runtime.CannotCreateStartupObjectException: 
Could not create an instance of startup object blaghblagh ---> 
System.TypeInitializationException: The type initializer for 'foo' threw an exception. ---> 
System.IO.FileNotFoundException: Could not load file or assembly 'blah' or one of its dependencies. 
The system cannot find the file specified.

После этого, благодаря [1], FusLogvw быстро решил для меня проблему.

[1] Не удалось загрузить файл или сборку или одну из ее зависимостей

...