【问题标题】:OneNote 2013 Add-in won't load. How to debug?OneNote 2013 加载项不会加载。如何调试?
【发布时间】:2013-11-30 04:52:24
【问题描述】:

我正在关注excellent tutorial by Malte Ahrens,了解如何创建 OneNote 加载项。

最初我一步一步地跟着它做一些更改(只是重命名类,并在程序集中使用我自己的名称和 GUID)信息。由于我正在使用 VS2012 并且还没有准备好手动安装 WiX 安装程序,因此我手动将构建的 dll 复制到正确的位置,并创建了一个注册表文件来创建必要的条目。我确认它们都在那里,加载了 OneNote 但没有加载项,进入“管理 COM 加载项”部分我看到以下错误:

加载行为:未加载。加载 COM 插件期间发生运行时错误。

我花了一些时间对此进行调试,但并没有走得太远。所以今天下午我决定重新开始,但逐字复制他的代码。我只是下载了示例项目,使用Vdproj to Wix 的试用版创建了安装程序并构建了所有内容。

我得到了完全相同的错误。

请问这是为什么?这是什么意思,最重要的是如何调试问题?

关于我的环境的一些细节以及它可能与原始教程不同的地方。

我正在运行 Office 2013,它是 64 位的。他的教程是针对 2010 年的。这意味着当我加载演示解决方案时,我必须删除对 Onenote 14 互操作的不存在引用并添加 v15 版本。

就注册表项而言,它们位于正确的位置,而不是 WOW6432 注册表节点。我很清楚这一点,好像我加载了 OneNote,然后刷新加载项的 HKCR 注册表节点,LoadBehavior 切换到 0x00000002,(禁用)。

其他可能值得注意的事情。

我已启用 OneNote 日志记录,它对我的​​问题没有任何影响。

这里还有 2 个其他帖子存在看似类似的问题(但 Office 2010)here 和 here,均未得到回复。第一个人加载了一次,但每次都必须手动启动它,我的从来没有加载(我还没有签署我的程序集)第二个人从来没有得到回应。

正如我所说,即使知道如何进一步调试也将是向前迈出的一大步。

编辑:

我已经回去调试我自己的版本,这几乎是一样的,因为我不确定安装程序实际上在做什么,我认为因为它是 wix 转换器的演示,它只允许我为 x86 构建.

如果我在“启动外部程序”下添加 OneNote.exe 并在我的加载项上运行调试,当我尝试在 OneNote 中的“管理 COM 加载项”下勾选加载项时,会看到以下行。恐怕我还是很绿,所以我不确定这意味着什么。

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 吗?

【问题讨论】:

  • 根据Engineering OneNote blog,OneNote 通过 DllHost.exe 运行插件。如果您在所有入口点(特别是 OnConnection)上调用 MessageBox,会出现这种情况,还是也会失败?
  • 谢谢。恐怕没有消息框出现。在运行调试之前,我尝试将 Onenote.exe 和 DllHost.exe 添加为启动应用程序。在以前的 OneNote 中确实会加载,但即使我尝试在 ON 运行时再次加载它,我们也永远无法访问我的加载项。
  • 我在上面添加了一个编辑,以包括我尝试过的一些进一步的事情。

标签: com office-interop onenote


【解决方案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\

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 2011-07-13
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    相关资源
    最近更新 更多