关于delphi:COM-Addin不会在Outlook 2010×64中加载(LoadBehavior设置为2)。如何调试”运行时错误”?

COM-Addin does not load in Outlook 2010x64 (LoadBehavior set to 2). How to debug “runtime error”?

我有一个使用Add-in-Express框架(即不是.NET,没有VSTO)用Delphi XE3 / XE4编写的插件。它在所有32位版本的Outlook和64位版本的Outlook 2013中都可以正常运行。但是,在64位版本的Outlook 2010下,它根本无法加载:COM-Addin管理器告诉我"未加载。在加载COM加载项期间发生运行时错误。" (即注册表中的LoadBehavior-value设置为2)。

有什么办法找出"运行时错误"可能是什么?

我已经在我的代码以及VCL和ADX代码中放置了OutputDebugString,在Outlook再次卸载DLL之前,似乎根本无法访问其中的任何一个。

在调试器中(通过PAServer)运行时,我设置的任何断点(例如在DPR文件的begin上或在Classes单元的initialization中)甚至都不会启用。在我看来,该DLL甚至从未加载到调试器中(这在Outlook 2013x64上确实可以正常工作)。

我还已经编写了一个虚拟主机EXE,它将实例化我的COM服务器并在IDTExtensibility2-接口上调用适当的方法来模拟实际的Outlook主机,但在这种情况下也不会发生错误。

使用Process Monitor进行查看,加载项DLL会短暂加载,然后立即再次卸载,然后重置LoadBehavior值。

我检查了应用程序日志并启用了Outlook本身的日志记录,但到目前为止,仍未暗示所谓的"运行时错误"的性质。

所有最新更新和Service Pack均已应用于所有Delphi,Add-in-Express,Outlook,Windows。 Windows版本是7 Pro。没有安装其他加载项。

关于要检查的内容还有其他想法吗?


将环境变量VSTO_SUPPRESSDISPLAYALERTS值0添加到引起问题的那台PC上。
然后,您可以从Outlook >>选项>>插件>>管理重新加载插件。
因此,Outlook将尝试重新加载此插件,您将获得一个弹出窗口,其中包含问题的详细信息...