#vsto #outlook-2007 #outlook-addin
#vsto #outlook-2007 #надстройка outlook
Вопрос:
Я пытаюсь определить, почему мой плагин Outlook, написанный на C # / VSTO 3.0 / VS 2008, не загружается после установки.
Плагин отлично работает на моей машине разработки, на которой установлена Visual Studio 2008. Я не могу ожидать, что у всех моих пользователей будут все необходимые условия, поэтому я выполнил следующие шаги для написания установщика: http://msdn.microsoft.com/en-us/library/cc563937 (loband).aspx
Я установил надстройку на новый компьютер с Windows XP SP 2 со свежей установкой Outlook 2007. Все предварительные настройки установлены нормально (.NET 3.5, среда выполнения VSTO 3.0, установщик Windows 3.1, PIA 2007). Outlook запускается, но надстройка не запускается. Если я перейду на вкладку «Надстройки» в Центре доверия, я увижу свою надстройку в разделе «Неактивные надстройки приложения» с сообщением «Не загружено. Во время загрузки надстройки COM произошла ошибка времени выполнения «..
Не уверен, как найти конкретную ошибку, чтобы я мог ее исправить.
Регистрационные ключи выглядят нормально. В разделе HKEY_CURRENT_USERSoftwareMicrosoftOffice OutlookAddins BlahAddin я вижу Description, FriendlyName, LoadBehavior (устанавливается равным 3 до сбоя, после чего if становится равным 2) и Manifest.
Попробовал использовать трюк с переменной среды VSTO_SUPPRESSDISPLAYALERTS, а затем запустил Outlook из командной строки, но никаких выходных данных не вышло.
У меня удаленная отладка более или менее работает, но я не уверен, что искать. Я не вижу, что моя DLL загружается при подключении к Outlook, но опять же, возможно, управляемые DLL не отображаются таким же образом в VS.
Любые другие идеи о следующих шагах, которым я мог бы следовать, чтобы вызвать конкретную ошибку, которую я могу диагностировать?
Ответ №1:
Решила мою проблему после нескольких недель мучений. Регистрационный ключ «Manifest» был поврежден до некоторого нежелательного значения во время сборки установки. Это была известная ошибка Visual Studio, которая предположительно была исправлена в Visual Studio 2008 SP 1, но, по-видимому, не для меня. Переименование названия проекта, чтобы оно отличалось от названия плагина, устранило проблему. Случайно, да?
Ответ №2:
Убедитесь, что у вас есть обработчики try-catch на верхнем уровне всех методов, вызываемых Outlook, и регистрируйте любые исключения, которые вы каким-либо образом не можете обработать. Сосредоточьте устранение неполадок на таких методах, как Startup
метод и другие методы, вызываемые во время инициализации.
Комментарии:
1. К сожалению, не помогло. Мои методы запуска / завершения работы довольно бесплодны, и я попытался обернуть их блоками try / catch.
Ответ №3:
Вероятно, вы захотите отладить это с помощью удаленного отладчика. Поделитесь MSVCMON.EXE папка с вашего компьютера разработчика (в папках Visual Studio в Program Files) на вашем тестовом компьютере (предоставьте к ней доступ по пути UNC) и запустите Outlook с помощью отладчика, перехватывающего исключения (.NET) в ваших модулях и устанавливающего точки останова в ваших методах.
Если вам нужно каждый раз очищать тестовый компьютер перед установкой решения, вам, вероятно, следует запускать XP под виртуальной машиной Virtual PC 2007 (скачать бесплатно) и переключаться на отличающийся HD после настройки всего, кроме вашего плагина, для моментального снимка вашего предустановленного состояния один раз, чтобы вам не приходилось постоянно удалять / переустанавливать при внесении изменений в вашу программу для исправления ошибок.
Вы устанавливаете отладочные сборки или релизные сборки? Возможно, у одного варианта разные требования. Просто догадываюсь.
-Майк [Разработчик MSFT Office]
Комментарии:
1. Всегда устанавливается на чистую виртуальную машину без какого-либо состояния. Может подключаться к Outlook с помощью удаленной отладки в управляемом и неуправляемом режимах. Во время загрузки возникают исключения, но их трудно расшифровать без mso.dll символы: «Исключение первой возможности в 0x7c81eb33 (kernel32.dll) в OUTLOOK.EXE : 0x000006A6: Дескриптор привязки недопустим «. Аналогичные исключения в безопасном режиме, когда надстройка не загружена. Не удается установить точки останова в моей надстройке («Точка останова в данный момент не будет достигнута. Для этого документа не будут загружены символы. «) но мое окно сообщения не отображается, это означает, что я получаю сбой до загрузки надстройки.
Ответ №4:
На вашем компьютере при запуске надстройки из Visual Studio она должна создать раздел реестра в HKEY_CURRENT_USERSoftware MicrosoftVSTOSecurityInclusion{SomeGuid}. Убедитесь, что эти параметры реестра также развертываются вместе с вашей надстройкой. Именно они позволяют доверять вашему коду.