我的 VSTO Outlook 加载项在一台客户计算机上突然停止工作(无法加载,没有错误消息),并且我陷入了故障排除的困境。该机器是 Windows 7 x86、Outlook 2007。该加载项是用 Visual Studio 2008 编写的,并使用 VSTO 2005 和 2003 PIA(因为我们还需要支持 Outlook 2003)。它在其他机器上运行得很好。
以下是我尝试获得有用的故障排除输出:
- Add the
VSTO_SUPPRESSDISPLAYALERTS
environment variable (set to0
)。 - 使用管理权限启动 Outlook。
- 查看事件日志。
什么都没有。如果没有给出任何原因指示,加载项就不会加载。我还检查了“常见问题”(CAS 策略、安装的 PIA、注册表中的 LoadBehavior、重新安装 VSTO 和加载项)。
其他一些观察结果:
-
注册表中的
LoadBehavior
保持在3
。- 该加载项在 Outlook 中显示为“已禁用”。在“COM 加载项”中选中其复选框不会执行任何操作(没有错误,第二次输入表单时会再次清除该复选框)。
- 它在其他客户机器上运行得很好,在这台机器上也运行得很好。 (不,客户无法告诉我他的机器上发生了什么变化。)
- 我的代码最顶部有一条
Trace.WriteLine
消息(ThisAddIn_Startup
处理程序中的第一行),但未到达该消息(我检查了 DebugView ) 。因此,未加载的原因不是我的加载项中的异常,而是 VSTO 加载加载项失败或 Outlook 加载 VSTO 失败。
我真的很想强制 Outlook 和/或 VSTO 告诉我出了什么问题,而不是更多的随机调试(“试试这个...”、“试试那个...”) ,即在尝试启用加载项时向我提供有用的错误消息,而不是什么也不做。有任何想法吗?
最佳答案
以下是 RobertG5 解决方案的更多详细信息(太长,无法发表评论):
问题在于该加载项已被 Outlook 硬禁用。据我所知,这与“通常”的未加载场景不同。实现这一点的关键是要注意该加载项没有显示在非事件应用程序加载项下,而是显示在禁用的应用程序加载项下。这很重要:在后一种情况下,只需转到 COM-AddIn 屏幕并勾选复选框就不会执行任何操作。 (我想一个不错的消息框“您无法加载此加载项,因为它已被硬禁用”会要求太多......叹息。)
那么,如何重新启用硬禁用的加载项?
- 在管理框中,将COM 加载项更改为禁用的加载项,然后单击“转到”。
- 选择该加载项并点击启用。点击关闭。
好的,现在可以再次加载加载项了:
- 在管理框中,将禁用的加载项更改为COM 加载项,然后单击“转到”。
- 选中已禁用的加载项旁边的复选框。点击确定。
关于.net - 如何解决 VSTO 插件无法加载的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668777/