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

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

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

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

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

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

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

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

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

С точки зрения записей реестра они идут в нужное место, а не узлы реестра WOW6432. Я знаю это вдвойне, как будто я загружаю OneNote, а затем обновляю узел реестра HKCR для надстройки, Load Behavior переключается на 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 правильно?

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\

Другие вопросы по тегам