旧版 VSTO 添加在 Outlook 2016 中停用

Legacy VSTO add in deactivated in Outlook 2016

我继承了对旧版 Outlook 加载项的维护,这是由最终用户报告的问题触发的,该问题指出该加载项不再激活。

我所知道的

我们有一个旧的自定义加载项:

它在 Outlook 2010 上运行良好,用户最近已更新到 2016。

症状

它被配置为 x86。我试过将它切换到 x64,因为我使用的是 64 位 OS,但是插件只是没有加载。

我调查过的内容

我用谷歌搜索了一下,发现了这个 link:CRM for Outlook Add-In keeps disabling

我认为这句话描述了正在发生的事情:

Microsoft has some security measures in place to prevent slow add-ins from running inside Outlook. The issue is however that in many cases add-ins without fault are mistakenly marked as slow and disabled by Outlook, and if this is not immediately corrected when it first happens, Outlook may permanently disable them with no easy way to re-enable them.

我在 infrastructure/network 工程师 同事的帮助下进行了研究,看看我们是否可以将加载项切换为始终启用,但没有成功。


我调查了事件查看器日志,我发现了这个:

Outlook loaded the following add-in(s):

...
...

Name: AteamAddin
Description: AteamAddin
ProgID: AteamAddin
GUID: {00000000-0000-0000-0000-000000000000}
Load Behavior: 3
HKLM: 0
Location: file:///C:/Development/Deployment/AteamAddin.vsto
Boot Time (Milliseconds): 328

后跟一个只有我在 Outlook 中激活的加载项的条目,但是:

Boot Time (Milliseconds): 172

这比第二慢的要慢很多,加载时间为 47 毫秒,但老实说,对于自定义插件来说,即使 328 毫秒也不算太糟糕。


空的 GUID 很奇怪:

GUID: {00000000-0000-0000-0000-000000000000}

但我不知道这是否重要。我已经尝试将 Guid 属性添加到我的 ThisAddIn class,但没有效果。

问题

如何让 Outlook 2016 接受自定义加载项?

加载时间看起来不错,我看不出有什么奇怪的地方。相反,我建议确保在运行时不会触发任何异常。 Microsoft Office 应用程序可以禁用行为异常的 VSTO 加载项。如果某个应用程序未加载您的 VSTO 外接程序,则该应用程序可能已硬禁用或软禁用您的 VSTO 外接程序。

当 VSTO 加载项导致应用程序意外关闭时,可能会发生硬禁用。如果您在 VSTO 外接程序中的 Startup 事件处理程序正在执行时停止调试器,它也可能发生在您的开发计算机上。

当 VSTO 加载项产生不会导致应用程序意外关闭的错误时,可能会发生软禁用。例如,如果应用程序在执行 Startup 事件处理程序时抛出未处理的异常,则它可能会软禁用 VSTO 加载项。

当您重新启用软禁用的 VSTO 外接程序时,应用程序会立即尝试加载 VSTO 外接程序。如果最初导致应用程序软禁用 VSTO 外接程序的问题尚未修复,应用程序将再次软禁用 VSTO 外接程序。在 How to: Re-enable a VSTO Add-in that has been disabled 文章中阅读更多相关信息。

此外,我建议确保所有必需的先决条件都包含在加载项包中。

应用程序需要两个文件夹来移动邮件,因此它会在加载项启动时检查/创建它。看起来 Outlook 2016 对允许的内容有更多限制。检查这些文件夹所需的时间可能比 Outlook 允许的时间长,因此加载项已停用。

我将这些文件夹的检查和创建移至用户打开任何表单时。这样它就在过程的后期,并且可以毫无问题地工作。