如何故障排除一个 VSTO 加载不加载?

我的 VSTO Outlook 外接程序突然停止在一台客户机上工作(它没有加载,没有错误消息) ,我被困在故障排除。这台机器是 Windows7x86,Outlook2007。外接程序是用 Visual Studio 2008编写的,并使用 VSTO 2005和2003 PIA (因为我们也需要支持 Outlook2003)。它在其他机器上完全可以正常工作。

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

没什么。如果没有给出 任何的原因指示,外接程序就不会加载。我还检查了“通常的怀疑对象”(CAS 策略、安装的 PIA、注册表中的 LoadBehavior、重新安装 VSTO 和外接程序)。

其他一些观察:

  • 注册表中的 LoadBehavior保持在 3
  • 外接程序在 Outlook 中显示为“禁用”。在“ COM 外接程序”中选中它的复选框没有任何作用(没有错误,第二次输入表单时复选框将再次清除)。
  • 它在其他客户机器上运行良好,在这台机器上也运行良好。(不,客户不能告诉我他的机器上发生了什么变化。)
  • 我在代码的最顶部(ThisAddIn_Startup处理程序的第一行)有一个 Trace.WriteLine消息,它没有到达(我用 调试视图检查过)。因此,没有加载的原因不是我的外接程序中的异常,而是 VSTO 加载外接程序失败或 Outlook 加载 VSTO 失败。

而不是更多的随机调试(“尝试这个...”,“尝试那个...”) ,我真的想 强迫 Outlook 和/或 VSTO 告诉我出了什么问题,也就是说,给我一个有用的错误消息,而不是只有 什么都不做时,试图启用插件。有什么想法吗?

100843 次浏览

您是否再次尝试启用外接程序?它不会在禁用队列中的它之后运行。在您从禁用的外接程序屏幕上重新启用它之后,您可以在 COM-AddIn 屏幕上选中复选框,加载它,然后应该会提示您更多的细节,因为您设置了 VSTO_SUPPRESSDISPLAYALERTS变量关于可能已经发生了什么放在首位。

以下是关于 RobertG5解决方案的更多细节(太长,无法评论) :

问题是 Outlook 的外接程序是 严重残疾。据我所知,这与“通常的”不加载情况不同。实现这一点的关键是要注意,插件没有显示在 非活动应用程序外接程序下,而是显示在 禁用的应用程序外接程序下。这就造成了不同: 在后一种情况下,只要进入 COM-AddIn 屏幕并勾选复选框就什么都不会做。(我认为一个不错的消息框“您无法加载这个外接程序,因为它已经被硬禁用”要求的太多了... ... 叹气。)

那么,我如何重新启用一个硬禁用的外接程序?

  1. 管理框中,将 COM 外接程序更改为 禁用的外接程序,然后单击 Go。
  2. 选择外接程序并单击 启动。单击 差不多

好的,现在可以再次加载外接程序:

  1. 管理框中,将 禁用的外接程序更改为 COM 外接程序,然后单击 Go。
  2. 选中禁用外接程序旁边的复选框。单击 好的

参考资料: http://msdn.microsoft.com/en-us/library/ms268871.aspx

我知道这是旧的,但由于各种原因,我最近一直在故障排除 Office 加载不加载。

它咀嚼了大量的时间,所以我想我会分享,所以如果你的外接程序不会加载或它不可见或等请尝试这些解决方案。

1. 未加载外接程序。

未加载。加载 COM 外接程序时发生运行时错误。

enter image description here

问题是由于缺少.Net 框架3.5或4.0。

注意: 如果 Office 版本是64位(x64) ,我只需要。净值4.0。但是,如果办公版本是32位(x86) ,那么在安装之后就会出现错误。净值也是4.0。按照这个 文章,我安装了。Net 3.5,然后它在 x86 Office 上工作!

另外需要安装 VSTO 运行时3.0表单 给你

2. 未加载外接程序。

仔细检查您是否正确拼写了注册表项。偶尔我会输入 Behavior,但在美国拼写中是 Behavior,所以请仔细检查“ LoadBehavior”

enter image description here

还要确保“ LoadBehavior”为3,有关值列表,请参见 http://msdn.microsoft.com/en-us/library/vstudio/bb386106.aspx#LoadBehavior

3. 外接程序不可见。

你可以通过点击 Excel > File > Options > Add-Ins > 选择管理下拉列表并将其设置为 COM Add-Ins > Click GO 来使外接程序可见。在 COM 外接程序对话框中,确保勾选了外接程序。

4. 外接程序被禁用。

或者,外接程序可能被隐藏,因为它已被禁用。您可以通过点击 Excel > File > Options > Add-Ins > 选择管理下拉列表并将其设置为“禁用”,然后单击 GO 来启用外接程序。选择已禁用的外接程序,然后单击“启用”。

enter image description here

5. ExcelDNA 用户定义公式呈现不正确

您看到的不是单元格值: # NAME?

设置以下注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\options\OPEN:

用正确的数值:

/R "C:\Program Files\XYZ\XYZ Addin\ExcelDNA.XYZAddIn.xll"

显示消息框后 Excel 挂起

打开应用程序设置:

xlApp.ScreenUpdating = true;
xlApp.DisplayAlerts = true;
xlApp.Calculation = XlCalculation.xlCalculationAutomatic;
xlApp.UserControl = true;
xlApp.EnableEvents = true;

7. 进一步的故障排除

通过在系统环境变量中添加以下内容来启用 VSTO 日志文件:

NAME: VSTO_LOGALERTS
VALUE: 1

可能存在异常错误,这就是外接程序未加载的原因。

你可以在 VSTO 日志和警报上检查 这个来源为更多的信息,但实际上你可以根据你的需要改变两个环境变量值:

显示 VSTO 警报提示

若要在消息框中显示每个错误,请将 变量为0(0) 消息通过将变量设置为1(一)。

将 VSTO 警报记录到日志文件

若要将错误写入日志文件,请设置 VSTO_LOGALERTS变量 至1(1)。

VisualStudioToolsforOffice 在文件夹中创建日志文件 包含应用程序清单。 若要停止日志记录错误,请将变量设置为0(零)。

我建议使用 Microsoft 工具来诊断称为 AddinSpy的外接程序问题。

最后,我哄着 Word 告诉我:

    Microsoft.VisualStudio.Tools.Applications.Runtime.CannotCreateStartupObjectException:
Could not create an instance of startup object blaghblagh --->
System.TypeInitializationException: The type initializer for 'foo' threw an exception. --->
System.IO.FileNotFoundException: Could not load file or assembly 'blah' or one of its dependencies.
The system cannot find the file specified.

之后,由于[1] ,FusLogvw 很快为我解决了这个问题。

[1] 无法加载文件或程序集或其依赖项之一

有意思的是,我试过重启。帮我修好了。但是,它为我修复它的原因是,我有一个流氓 Excel.exe 运行隐藏。由于另一个 Excel 应用程序正在运行(我正在将一个 MSAccess 应用程序迁移到 VSTO) ,插件没有启动,因此 Access 隐藏了一个打开的自动化应用程序。

简而言之,如果您的插件没有启动,快速检查是为了确保没有其他 Excel 应用程序运行。当然,这只适用于您试图安装/启动并运行一个全新的系统时。

(我使用这个链接) Https://www.add-in-express.com/creating-addins-blog/2012/11/13/wix-installation-vsto-office-addin/

这里还有另一种可能性,即为什么即使设置了上面提到的环境变量,您也没有得到任何反馈。我发现如果您在安装之后得到这个错误(不是之前的 VSTO 已经工作) ,您还应该仔细检查注册表和 “清单”条目,如果您有一个。

虽然杰里米汤普森指出注册表在他的第二个要点,他没有显示的 旅客名单条目,可能是你的注册表设置的一部分。如果 Manifest 条目没有指向正确的路径和文件,它将显示在 Add-Ins 清单中,其条目为 “未上膛”

这里我们看到一个坏的条目,它只指向 VSTO 文件,没有路径。 enter image description here

这将导致您的 AddIn 看起来像是装载了错误,但是没有错误弹出和出现在您面前,使事情变得令人沮丧。所以它看起来像下面这样,注意下面的位置条目也没有显示路径。 enter image description here

通过放入正确的路径和文件名来更正条目,它将修复此问题。

我假设没有错误是因为您最初没有指向任何内容,所以它列出了 AddIn,因为它在注册表中,即使没有要加载的内容。