Надстройка OneNote 2013 не загружается. Как отлаживать?

Я следую отличному руководству Мальте Аренс о том, как создать надстройку OneNote.

Сначала я следовал этому шаг за шагом, делая несколько изменений (просто переименовав класс и используя свое собственное имя и GUID в сборке) info. Поскольку я использую VS2012 и еще не готов вручную запустить установщик WiX, я вручную скопировал встроенную dll в нужное место, а также создал файл реестра для внесения необходимых записей. Я подтвердил, что все они были там, загрузил OneNote, но не надстройку, перейдя в раздел «управление надстройками COM», я увидел следующую ошибку:

введите здесь описание изображения

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

Я потратил некоторое время на отладку этого, но не продвинулся очень далеко. Итак, сегодня днем ​​я решил начать заново, но дословно скопировал его код. Я просто скачал пример проекта, использовал пробную версию Vdproj для Wix создать установщик и все собрать.

Я получаю точно такую ​​же ошибку.

Почему? Что это значит и, самое главное, как мне отладить проблему?

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

Я использую Office 2013 И это 64-битная версия. Его руководство предназначено для 2010 года. Это означает, что когда я загрузил демонстрационное решение, мне пришлось удалить несуществующую ссылку на Onenote 14 Interop и добавить версию v15.

Что касается записей реестра, то они идут в нужное место, а не в узлы реестра WOW6432. Я знаю это вдвойне, как будто я загружаю OneNote, а затем обновляю узел реестра HKCR для надстройки, LoadBehavior переключается на 0x00000002 (отключено).

Другие вещи, которые, возможно, стоит отметить.

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

Здесь есть еще 2 сообщения с похожей проблемой (но Office 2010) здесь и здесь не получили ответа. Первый парень загрузил его один раз, но затем ему приходилось каждый раз запускать его вручную, мой никогда не загружается (и я не подписал свою сборку), второй парень так и не получил ответа.

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

Редактировать:

Я вернулся к отладке своей собственной версии, которая в любом случае почти идентична, так как я не уверен, что на самом деле делает установщик, и я думаю, что, поскольку это демонстрация конвертера wix, он позволяет мне собирать только для x86.

Если я добавлю OneNote.exe в раздел «Запустить внешнюю программу» и запущу отладку своей надстройки, я увижу следующие строки, когда я попытаюсь отметить надстройку в разделе «Управление надстройками COM» в OneNote. Боюсь, я все еще довольно зеленый во всем этом, поэтому я не уверен, что это значит.

First-chance exception at 0x00007ffe4f86ab78 in ONENOTE.EXE: 0x800401FD: Object is not connected to server.
First-chance exception at 0x00007ffe4f86ab78 in ONENOTE.EXE: 0x800401FD: Object is not connected to server.
First-chance exception at 0x00007ffe4f86ab78 in ONENOTE.EXE: 0x800401FD: Object is not connected to server.

Кроме того, прочитав больше, я думаю, что простого копирования моей dll в папку установки program files\[manufacturer]\[application] (поскольку у меня нет установщика) было недостаточно. Теперь я выполнил это против моей dll

PS C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319> .\RegAsm.exe 

и он вернулся с

Microsoft .NET Framework Assembly Registration Utility version 4.0.30319.33440
for Microsoft .NET Framework version 4.0.30319.33440
Copyright (C) Microsoft Corporation.  All rights reserved.

Types registered successfully

Есть ли что-нибудь еще, что я должен сделать, чтобы правильно зарегистрировать dll?


person Darren Beale    schedule 16.11.2013    source источник
comment
Согласно Инженерный блог OneNote, OneNote запускает надстройки через DllHost.exe. Если вы помещаете вызовы MessageBox во все ваши точки входа (в частности, OnConnection), появляется ли это или это тоже не работает?   -  person Eric Brown    schedule 19.11.2013
comment
Спасибо. Боюсь, окно сообщений не появляется. Я попытался добавить Onenote.exe и DllHost.exe в качестве запускаемого приложения перед запуском отладки. В первом OneNote действительно загружается, но мы никогда не добираемся до моей надстройки, даже если я пытаюсь загрузить ее снова, когда работает ON.   -  person Darren Beale    schedule 20.11.2013
comment
Я добавил редактирование выше, чтобы включить некоторые дополнительные вещи, которые я пробовал.   -  person Darren Beale    schedule 20.11.2013


Ответы (1)


Включите ведение журнала для OneNote 2013:

Создайте файл «EnableOneNote2013APILogging.reg».

Windows Registry Editor Version 5.00  

[HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\OneNote\Options\Logging] 

"EnableLogging"=dword:00000001 

"EnableTextFileLogging"=dword:0000001

"ttidLogObjectModel"=dword:00000001 

"ttidLogObjectModelAddins"=dword:00000001

Создайте файл DisableOneNote2013APILogging.reg.

Windows Registry Editor Version 5.00  

[HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\OneNote\Options\Logging] 

"EnableLogging"=dword:00000000 

"EnableTextFileLogging"=dword:0000000

"ttidLogObjectModel"=dword:00000000 

"ttidLogObjectModelAddins"=dword:00000000 

Это основано на http://blogs.msdn.com/b/descapa/archive/2006/12/08/debugging-the-onenote-api-enable-logging.aspx, но вам нужно добавить EnableTextFileLogging ;-).

Файл журнала создается в папке %temp%\OneNote.log.

Для OneNote 2010 измените путь в файлах .reg на \14.0\ вместо \15.0\

person juFo    schedule 25.11.2015