我的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加载项"中选中其复选框没有任何作用(没有错误,第二次进入表单时复选框再次被清除)。
- 它在其他客户的机器上运行得非常好,在这台机器上也运行得非常好。(不,客户不能告诉我他的机器上发生了什么变化。)
- 在代码的最顶端(
ThisAddIn_Startup
处理程序的第一行)有一条Trace.WriteLine
消息,但没有到达(我用DebugView检查)。因此,没有加载的原因不是加载项中的异常,而是VSTO加载加载加载项失败或Outlook加载VSTO失败。
与其随机调试("尝试这个..."、"尝试那个..."),我真的希望强制Outlook和/或VSTO告诉我出了什么问题,也就是说,在尝试启用插件时,给我一个有用的错误消息,而不是仅仅 * 什么也不做 *。
7条答案
按热度按时间dba5bblo1#
下面是RobertG 5解决方案的更多细节(太长,无法评论):
问题是该加载项已被Outlook硬禁用。据我所知,这与“通常”的未加载情况有所不同。实现这一点的关键是要注意到该加载项没有显示在 Inactive Application Add-Ins 下,而是显示在 Disabled Application Add-Ins 下。这会产生不同:在后一种情况下,只需转到COM-AddIn屏幕并选中复选框,什么也做不了(我想一个漂亮的消息框“您无法加载此插件,因为它已被硬禁用”将是太多的要求... * 叹息 *)。
那么,如何重新启用硬禁用的加载项?
1.在"管理“框中,将”COM加载项“更改为”禁用的加载项“,然后单击”转到“。
1.选择加载项并单击启用。单击关闭。
好,现在可以再次加载外接程序了:
1.在"管理“框中,将”禁用的加载项“更改为”COM加载项“,然后单击”转到“。
1.选中禁用的加载项旁边的复选框。单击确定。
参考:http://msdn.microsoft.com/en-us/library/ms268871.aspx
cld4siwp2#
您是否尝试再次启用加载项?在它进入禁用队列后,它将不会运行。在您从禁用加载项屏幕重新启用它后,您可以选中COM-AddIn屏幕中的复选框以加载它,然后会提示您更多详细信息,因为您首先设置了
VSTO_SUPPRESSDISPLAYALERTS
变量以了解可能发生的情况。uyto3xhc3#
我知道这是旧的,但由于各种原因,我最近一直在排除Office加载项不加载。
它咀嚼了大量的时间,所以我想我会分享,所以如果你的插件不会加载或其不可见等,请尝试这些解决方案。
未加载。加载COM外接程序时发生运行时错误。
此问题是由于缺少. net framework 3. 5或4. 0造成的。
注:如果Office版本是64位(x64),我只需要. Net 4.0。但是,如果Office版本是32位(x86),我安装. Net 4.0后也会收到错误。在此article之后,我安装了. Net 3.5,然后它在x86 Office上工作!
另外需要安装VSTO运行时3.0表单here。
仔细检查您是否拼写正确的注册表项。偶尔我键入行为,但在美国拼写是行为,所以仔细检查"加载行为"
还要确保"LoadBehavior"为3,有关值列表,请参见www.example.comhttp://msdn.microsoft.com/en-us/library/vstudio/bb386106.aspx#LoadBehavior
要使加载项可见,请转到Excel〉文件〉选项〉加载项〉选择管理下拉列表并将其设置为COM加载项〉单击开始。在COM加载项对话框中,确保选中加载项。
加载项也可能因为已禁用而隐藏。您可以通过以下方式启用加载项:转到Excel〉文件〉选项〉加载项〉选择管理下拉列表并将其设置为禁用,然后单击开始。选择已禁用的加载项,然后单击启用。
您看到的不是单元格值:#姓名?
设置以下注册表项:
使用正确的值:
重新打开应用程序设置:
通过在系统环境变量中添加以下内容来启用VSTO日志文件:
可能存在异常错误,这就是外接程序未加载的原因。
要设置VSTO日志记录和警报,请根据需要更改两个环境变量值:
要在消息框中显示每个错误,请将VSTO_SUPPRESSDISPLAYALERTS变量设置为0(零)。可以通过将该变量设置为1(一)来隐藏消息。
要将错误写入日志文件,请将
VSTO_LOGALERTS
变量设置为1。Visual Studio Tools for Office在包含应用程序清单的文件夹中创建日志文件。默认名称为.manifest.log。若要停止记录错误,请将变量设置为0(零)。
owfi6suc4#
我建议使用一个名为AddinSpy的Microsoft工具来诊断插件问题。
ktca8awb5#
有趣的是,我尝试了重新启动。为我修复了它。然而,它为我修复的原因是,我有一个流氓Excel.exe隐藏运行。插件没有启动,由于这个其他Excel应用程序运行(我正在迁移MSAccess应用程序到VSTO),所以Access有一个自动化应用程序打开隐藏。
简而言之,如果你的插件没有启动,快速检查就是确保没有其他Excel应用程序在运行。当然,这只适用于你试图安装/启动并运行一个全新的插件。
(我使用此链接)https://www.add-in-express.com/creating-addins-blog/2012/11/13/wix-installation-vsto-office-addin/
cwtwac6a6#
这里还有另一种可能性,为什么你没有得到任何反馈,即使上面提到的环境变量被设置。我发现如果你得到这个错误后,安装(不是以前的VSTO已经工作),你也应该仔细检查注册表和 “清单” 条目,如果你有一个。
虽然Jeremy Thompson在第二个要点中指出了注册表,但他没有显示可能是注册表设置一部分的 Manifest 项。如果Manifest项没有指向正确的路径和文件,它将显示在加载项列表中,并显示为 “Not Loaded” 项。
这里我们看到一个只指向VSTO文件而没有路径的错误条目。
这将导致您的外接程序看起来像是加载了错误,但没有弹出任何错误,让您感到沮丧。因此,它看起来如下所示,请注意下面的位置条目也没有显示路径。
通过输入正确的路径沿着文件名来更正条目,它会修复这个问题。
我假设没有错误是因为您最初没有指向任何东西,所以它列出了AddIn,因为它在注册表中,即使没有要加载的东西。
8ftvxx2r7#
最后,我说服Word告诉我:
之后,多亏了[1],FusLogvw很快就帮我解决了这个问题。
[1][Could not load file or assembly or one of its dependencies](https://stackoverflow.com/questions/4469929/could-not-load-file-or-assembly-or-one-of-its-dependencies)