3

我正在关注Malte Ahrens关于如何创建 OneNote 加载项的优秀教程。

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

在此处输入图像描述

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

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

我得到完全相同的错误。

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

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

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

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

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

我已启用 OneNote 日志记录,我的问题很安静。

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

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

编辑:

我已经回去调试我自己的版本,无论如何这几乎是相同的,因为我不确定安装程序实际上在做什么,我认为因为它是 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 吗?

4

1 回答 1

0

为 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\

于 2015-11-25T08:23:18.037 回答