Надстройка 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\