我正在关注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 吗?