c# - 导致 Outlook 365 永久禁用自定义 VSTO COM 加载项的常见代码异味是什么?
问题描述
我目前正在维护一个公司内部的插件,它只接收一封邮件,将其包装为附件并将其发送到我们的内部邮件地址以进行垃圾邮件报告。
插件总是有一个看似没有原因的问题( - 此外:“插件导致 Outlook 崩溃 - 因此它已被永久禁用”,在检查插件状态时)Outlook 不喜欢它并永久禁用它重新启用的选项。
这已经是 Outlook 2016 的一个问题,并且可以通过设置一些注册表项来解决。我的任务是为 Outlook365 构建一个版本。Outlook365 在那里似乎更明智。
我添加了一个设置以下键的功能:
[HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\SpamReporter]
"LoadBehavior"=dword:00000003
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Resiliency\DoNotDisableAddinList]
"SpamReporter"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Addins\SpamReporter]
"LoadBehavior"=dword:00000003
以下密钥也通过公司政策推出:
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\outlook\resiliency\addinlist]
"SpamReporter"="1"
此外。该程序集使用 Visual Studio 中的 Comodo 证书进行签名,我也尝试再次对安装程序本身进行签名。
但所有这些努力似乎都没有什么不同。我以为我有一个可以推出的工作版本,只是得到了推出人员的回应,即当他快速测试时,插件没有显示给他。
这种行为真的令人沮丧,Office 365 VSTO COM 加载项故障排除的文档似乎真的很稀缺。
我花了很多时间试图解决这个问题。
解决方案
很可能您的插件加载时间过长(假设它不会在启动时崩溃)。请注意,您会因使用 .Net 而受到惩罚 - 特定版本的整个 .Net 运行时需要在插件中的单行代码运行之前加载。曾经有一个 Warmup 注册表项可以告诉 Outlook 您正在使用哪个版本的 .Net 运行时,因此它会预加载它,但它不再受支持。
当您转到文件 | 时 Outlook 本身会说什么?选项 | 插件 | COM 插件?
推荐阅读
- javascript - 如何获取页面上任何图像的高分辨率 url?
- node.js - 从命令行运行 Cypress 并指向测试文件夹
- react-native - 如何以优化的方式使用 React Native 实现将联系人同步到服务器
- php - Laravel 函数助手 dd() 没有按预期工作
- python - 如果组合 django 中不存在任何一个输入,python 过滤器将返回 none
- excel - 使用 VBA 根据另一个工作簿单元格值过滤数据
- javascript - 在 Google AppScript 中指定直到最后一列的范围
- java - Android Studio:向上/向下滑动部分布局
- c - 使用libav编码时根据经过时间计算帧PTS
- supervisord - 有没有办法自动更新主管?