如何对未加载的VSTO插件进行故障排除?


76

我的VSTO Outlook加载项突然停止在一台客户计算机上工作(它没有加载,没有错误消息),并且我一直无法解决问题。该计算机是Windows 7 x86,Outlook2007。此加载项是使用Visual Studio 2008编写的,并且将VSTO 2005与2003 PIA一起使用(因为我们也需要支持Outlook 2003)。它在其他机器上也可以正常工作。

这是我尝试获得有用的故障排除输出的方法:

没有。加载项是不会加载而不给予任何的理由指示。我还检查了“通常的可疑对象”(CAS策略,已安装PIA,注册表中的LoadBehavior,重新安装VSTO和加载项)。

其他一些观察:

  • LoadBehavior在注册表中停留在3
  • 外接程序在Outlook中显示为“禁用”。选中“ COM加载项”中的复选框不会执行任何操作(没有错误,再次输入表单时会再次清除复选框)。
  • 它在其他客户计算机上运行良好,在此计算机上运行良好。(不,客户不能告诉我他的机器发生了什么变化。)
  • Trace.WriteLine在代码的最顶部(ThisAddIn_Startup处理程序的第一行)有一条消息,但没有到达(我用DebugView检查过)。因此,不加载的原因不是我的加载项中的例外,而是VSTO加载加载项失败或Outlook加载VSTO失败。

而不是进行更多的随机调试(“尝试...”,“尝试...”),我真的想强迫Outlook和/或VSTO告诉我出了什么问题,即给我一个有用的错误消息只是无所事事试图启用加载项时。有任何想法吗?


9
此问题与Outlook加载项的VSTO有关,但是此问题是Office的一般问题。该问题及其答案帮助我使用了Excel 2010加载项。
Dirk Brockhaus

2
+1,将我介绍给VSTO_SUPPRESSDISPLAYALERTS环境变量
Andy McCluggage,2012年

1
@Heinzi-感谢您提出这个问题,我添加了其他大多数使人绊倒的解决方案。除非它发生在citrix上,否则残疾人很容易修复...
杰里米·汤普森

还请参阅本Outlook 2007的改变LoadBehavior的以0:stackoverflow.com/questions/7691372/...
亚历山德鲁·

您是否检查了清单文件是否位于正确的位置?还要检查该加载项的注册表项在HKLM和HKCU两个分支中是否存在。
Ajit Medhekar '16

Answers:


53

您是否尝试过再次启用该加载项?它在禁用队列中后将不会运行。从禁用的加载项屏幕重新启用它之后,您可以在COM-AddIn屏幕中选中该框以使其加载,然后应提示您更多详细信息,因为您设置了VSTO_SUPPRESSDISPLAYALERTS有关第一个可能发生的情况的变量地点。


5
这就是问题所在:我选中“ COM-AddIns”屏幕中的框,单击“确定”,重新进入“ COM-AddIns”屏幕,然后再次取消选中该框。不会出现任何错误消息。
Heinzi 2011年

3
我的意思是检查禁用的加载项队列(而不是未选中的加载项)。在加载项类型中,下拉列表中的最后一项。就像炼狱一样,可能会导致不良的加载项。
加德纳的

2
+1,您当然是对的。抱歉第一次阅读您的答案有误(顺便说一句,不是我发的票)。我会将您的答案标记为答案,但我也会将答案保留在这里,因为它有点冗长。
Heinzi

1
如果插件崩溃,则会出现它,它将被添加到禁用的插件中。我不确定该插件是否崩溃过多或Outlook确定它们的崩溃类型足够严重,无论如何您都必须先从那里删除它。尝试启用它否则将不起作用。
松饼人

1
如果仍然有问题,请尝试将所有内容包装在应用程序中,然后尝试尝试。
松饼人

55

下面是有关RobertG5解决方案的更多详细信息(时间太长,无法发表评论):

问题在于该加载项已被Outlook硬禁用。据我了解,这与“通常”的非加载方案有所不同。实现此目的的关键是要注意,该加载项未显示在“非活动应用程序加载项”下,而是在“禁用的应用程序加载项”下。这有所不同:在后一种情况下,仅进入COM-AddIn屏幕并勾选复选框将无济于事。(我想一个不错的消息框:“您无法加载此加载项,因为它已被禁用”,这实在是太多了。。。叹气。)

那么,如何重新启用硬禁用加载项?

  1. 在“管理”框中,将“ COM加载项”更改为“禁用的加载项”,然后单击“转到”。
  2. 选择加载项,然后单击启用。单击关闭

确定,现在可以再次加载该加载项:

  1. 在“管理”框中,将“禁用的外接程序”更改为“ COM外接程序”,然后单击“转到”。
  2. 选中禁用的加载项旁边的复选框。单击确定

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


3
大。感谢您的参考。我补充说,对于Microsoft Office 2003应用程序,禁用加载项的列表位于“帮助-关于”菜单中。
Boogier

46

我知道这很旧,但是由于种种原因,我最近一直在对无法加载的Office加载项进行故障排除。

它消耗了很多时间,所以我想与您分享,因此,如果您的加载项无法加载或不可见或其他原因,请尝试以下解决方案。

1.加载项未加载。

未加载。加载COM加载项期间发生运行时错误。

在此处输入图片说明

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

注意:如果Office版本是64位(x64),则仅需要.Net 4.0。但是,如果Office版本是32位(x86),则在安装.Net 4.0后也会出现错误。在本文之后,我安装了.Net 3.5,然后在x86 Office上运行了。

另外需要在此处安装VSTO Runtime 3.0表单。

2.加载项未加载。

仔细检查您是否正确拼写了注册表项。有时我会键入“行为”,但在美国拼写中是“行为”,因此请仔细检查“ LoadBehavior”

在此处输入图片说明

另外,请确保“ LoadBehavior”为3,有关值的列表,请参见http://msdn.microsoft.com/zh-cn/library/vstudio/bb386106.aspx#LoadBehavior

3.加载项不可见。

您可以通过以下方式使加载项可见​​:Excel>文件>选项>加载项>选择管理下拉列表,并将其设置为COM加载项>单击GO。在“ COM加载项”对话框中,确保已选中“加载项”。

4.加载项被禁用。

或者,该加载项可能被隐藏,因为它已被禁用。您可以通过以下方式启用加载项:转到Excel>文件>选项>加载项>选择管理下拉列表并将其设置为已禁用,然后单击执行。选择已禁用的加载项,然后单击“启用”。

在此处输入图片说明

5. ExcelDNA用户定义公式无法正确显示

而不是看到单元格值,而是看到:#NAME?

设置以下注册表项:

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

具有正确的值:

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

6.显示消息框后的Excel HANGS

重新打开应用程序设置:

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警报提示

要在消息框中显示每个错误,请将VSTO_SUPPRESSDISPLAYALERTS变量设置为0(零)。您可以通过将变量设置为1(一)来禁止显示消息。

将VSTO警报记录到日志文件

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

Visual Studio Tools for Office在包含应用程序清单的文件夹中创建日志文件。默认名称是.manifest.log。要停止记录错误,请将变量设置为0(零)。


4)。加载项被禁用。->为我做到了!
gilu

7

我建议使用Microsoft工具来诊断加载项问题AddinSpy


在尝试了各种方法之后,该工具对我有用。原来正在加载插件,但未加载其他依赖项(dll),因为“此程序集是由比当前加载的运行时新的运行时构建的,无法加载”。AddinSpy帮助我获得了该错误消息。
floatingfrisbee

这真是令人失望的死路一条。我认为那将帮助我解决我的问题。
RubberDuck

您可能要搜索下载位置。这里有一个页面,看看是什么样子: msdn.microsoft.com/en-us/library/cc984533%28v=office.12%29.aspx
塞德里克Guillemette

1
如果您不愿意自己构建它,则可以从GitHub获得AddInSpy的(非官方)源:github.com/NetOfficeFw/AddInSpy
Jon Iles

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/


1

关于设置了上述环境变量的原因,为什么也没有任何反馈,这还有另一种可能性。我发现如果在安装后收到此错误(不是以前的VSTO可以正常工作),还应该仔细检查注册表和“清单”项(如果有)。

虽然Jeremy Thompson在他的第二个要点中指出了注册表,但是他没有显示清单条目,该清单条目可能是您的注册表设置的一部分。如果您的清单条目没有指向正确的路径和文件,它将显示在加载项列表中,条目为“ Not Loaded”

在这里,我们看到一个错误的条目,该条目仅指向VSTO文件,没有路径。 在此处输入图片说明

这将使您的AddIn看起来好像加载了错误,但没有错误弹出并为您显示并避免使您感到沮丧。因此,其外观如下所示,请注意下面的位置条目也未显示路径。 在此处输入图片说明

通过输入正确的路径以及文件名来更正条目,它将解决此问题。

我认为缺少错误是由于您一开始没有指向任何对象,所以它列出了AddIn,因为它位于注册表中,即使没有要加载的内容。


0

最终我哄骗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]无法加载文件或程序集或其依赖项之一

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.