我的VSTO Outlook加载项突然在一台客户机器上停止工作(它没有加载,没有错误消息),我一直在进行故障排除.机器是Windows 7 x86,Outlook 2007.外接程序使用Visual Studio 2008编写,并使用VSTO 2005和2003 PIA(因为我们还需要支持Outlook 2003).它在其他机器上工作得非常好.

以下是我试图获得的有用的故障排除输出:

没什么.如果不给出any个原因说明,插件就不会加载.我还判断了"常见的疑点"(CAS策略、安装的PIA、注册表中的LoadBehavior、重新安装VSTO和外接程序).

其他一些观察结果:

  • 注册表中的LoadBehavior保持在3.
  • 外接程序在Outlook中显示为"已禁用".在"COM加载项"中选中其复选框不会产生任何效果(没有错误,第二次输入表单时再次清除复选框).
  • 它在其他客户机器上运行得非常好,在这台机器上也运行得非常好.(不能,客户不能告诉我他的机器上发生了什么变化.)
  • 我的代码最顶端有一条Trace.WriteLine消息(ThisAddIn_Startup处理程序的第一行),它没有到达(我判断了DebugView).因此,不加载的原因不是我的外接程序中的异常,而是VSTO无法加载外接程序或Outlook无法加载VSTO.

而不是更多的随机调试("试试这个……","试试……",我真的想要force Outlook and/or VSTO to tell me what's wrong,也就是说,在try 启用外接程序时,给我一条有用的错误消息,而不是doing nothing.有什么 idea 吗?

推荐答案

是否再次try 启用加载项?它将不会在其处于禁用队列中后运行.从disabled add-in(已禁用的加载项)屏幕重新启用后,可以选中COM AddIn(COM加载项)屏幕中的复选框以加载它,这将提示您更多详细信息,因为您将VSTO_SUPPRESSDISPLAYALERTS变量设置为最初可能发生的情况.

.net相关问答推荐

DI通过对象的接口而不是实际类型来解析服务

跨请求共享数据

保存时不保留 XML 格式

xunit Assert.ThrowsAsync() 不能正常工作?

Gacutil.exe 成功添加程序集,但在资源管理器中无法查看程序集.为什么?

泛型方法是如何、何时、何地具体化的?

我可以使用 UriTemplate 将非字符串传递给 WCF RESTful 服务吗?

如何在 C# 中直接执行 SQL 查询?

运算符重载 ==, !=, Equals

如何使用转储文件来诊断内存泄漏?

如何使用 NUnit(或可能使用另一个框架)测试异步方法?

如何将枚举值序列化为 int?

修剪数组中的所有字符串

在 C# 中使用委托

.net 自定义配置如何不区分大小写解析枚举 ConfigurationProperty

等效于 C# 在 powershell 中的使用关键字?

何时何地使用 GetType() 或 typeof()?

确定使用 ContextMenuStrip 的控件

是 C# 中的 bool 读/写原子

从 Visual Studio 2015 发布 - 允许不受信任的证书