如何解决无法加载的VSTO插件?

Hei*_*nzi 73 .net vsto outlook-addin

我的VSTO Outlook插件突然停止在一台客户机器上工作(它没有加载,没有错误消息)而且我遇到了故障排除问题.该机器是Windows 7 x86,Outlook 2007.该加载项是使用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告诉我什么是错的,即给我一个有用的错误信息而不是只是无所事事试图启用加载项时.有任何想法吗?

Hei*_*nzi 53

这里有关于RobertG5解决方案的更多细节(评论太长了):

问题是Outlook 严格禁用了加载项.据我所知,这与"通常"的无负载情况有所不同.实现这一点的关键是注意到加载项未显示在非活动应用程序加载项下,而是显示在" 已禁用的应用程序加载项"下.这有所不同:在后一种情况下,只需进入COM-AddIn屏幕并勾选复选框即可.(我猜一个很好的消息框"你无法加载这个加载项,因为它已经被硬禁用了"会太多问了...... 叹了口气.)

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

  1. 在" 管理"框中,将" COM加载项"更改为" 已禁用的加载项",然后单击"执行".
  2. 选择加载项,然后单击" 启用".单击关闭.

好的,现在可以再次加载加载项:

  1. 在" 管理"框中,将" 禁用的加载项"更改为" COM加载项",然后单击"执行".
  2. 选中已禁用加载项旁边的复选框.单击确定.

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

  • 大.谢谢你的参考.我补充说,对于Microsoft Office 2003应用程序,禁用的插件列表放在"帮助 - 关于"菜单中. (3认同)

Gar*_*ner 52

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

  • 这正是问题所在:我选中COM-AddIns屏幕中的框,单击OK,重新进入COM-AddIns屏幕,再次取消选中该框.没有出现任何错误消息. (5认同)
  • 我的意思是检查禁用的插件队列(不是您未经检查的插件).在加载项类型中,下拉列表中的最后一项.它就像潜在的坏插件的炼狱一样. (3认同)
  • +1,你当然是对的.很抱歉第一次读错了你的答案(downvote不是来自我,顺便说一下).我会把你的标记作为答案,但我也会在这里保留我的答案,因为它有点冗长. (2认同)

Jer*_*son 44

我知道这是旧的但由于各种原因我最近一直在解决不加载Office附加组件的问题.

它嚼了很多时间,所以我想我会分享,所以如果你的加载项不会加载或不可见或等等,请尝试这些解决方案.

1).未加载加载项.

没装.加载COM加载项期间发生运行时错误.

在此输入图像描述

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

注意:在x64上我只需要.Net 4.0但是在x86 PC上我在安装.Net 4.0后出错了.在这篇文章之后,我安装了.Net 3.5,然后它在x86 PC上运行!

2).未加载加载项.

仔细检查您是否正确拼写了注册表项.偶尔我输入行为,但美国拼写是行为,所以仔细检查"LoadBehavior"

在此输入图像描述

还要确保"LoadBehavior"为3,有关值列表,请参阅http://msdn.microsoft.com/en-us/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:
Run Code Online (Sandbox Code Playgroud)

使用正确的值:

        /R "C:\Program Files\XYZ\XYZ Addin\ExcelDNA.XYZAddIn.xll"
Run Code Online (Sandbox Code Playgroud)

6).显示消息框后显示Excel HANGS

关闭应用程序设置:

        xlApp.ScreenUpdating = true;
        xlApp.DisplayAlerts = true;
        xlApp.Calculation = XlCalculation.xlCalculationAutomatic;
        xlApp.UserControl = true;
        xlApp.EnableEvents = true;
Run Code Online (Sandbox Code Playgroud)

7).进一步排查

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

NAME: VSTO_LOGALERTS
VALUE: 1
Run Code Online (Sandbox Code Playgroud)

可能存在异常错误,这是加载项未加载的原因.

您可以查看此源以获取有关VSTO日志记录和警报的更多信息,但实质上您可以根据需要更改两个环境变量值:

显示VSTO警报提示

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

将VSTO警报记录到日志文件中

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

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


Céd*_*tte 7

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

  • 如果您不介意自己构建它,可以从 GitHub 获得 AddInSpy 的(非官方)源代码:https://github.com/NetOfficeFw/AddInSpy (2认同)