.net 如何解决VSTO插件无法加载的问题?

bvjxkvbb  于 2023-01-14  发布在  .NET
关注(0)|答案(7)|浏览(1198)

我的VSTO Outlook加载项在一台客户计算机上突然停止工作(它没有加载,没有错误信息),我陷入了故障排除。机器是Windows 7 x86,Outlook 2007。该加载项使用Visual Studio 2008编写,并使用VSTO 2005和2003 PIA(因为我们也需要支持outlook 2003)。它在其他机器上运行得非常好。
以下是我试图获得的有用的故障排除输出:

什么都没有。加载项就是无法加载,没有给出任何原因。我还检查了"常见的嫌疑人"(CAS策略,安装的PIA,注册表中的LoadBehavior,重新安装VSTO和加载项)。
其他一些意见:

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

与其随机调试("尝试这个..."、"尝试那个..."),我真的希望强制Outlook和/或VSTO告诉我出了什么问题,也就是说,在尝试启用插件时,给我一个有用的错误消息,而不是仅仅 * 什么也不做 *。

dba5bblo

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

cld4siwp

cld4siwp2#

您是否尝试再次启用加载项?在它进入禁用队列后,它将不会运行。在您从禁用加载项屏幕重新启用它后,您可以选中COM-AddIn屏幕中的复选框以加载它,然后会提示您更多详细信息,因为您首先设置了VSTO_SUPPRESSDISPLAYALERTS变量以了解可能发生的情况。

uyto3xhc

uyto3xhc3#

我知道这是旧的,但由于各种原因,我最近一直在排除Office加载项不加载。
它咀嚼了大量的时间,所以我想我会分享,所以如果你的插件不会加载或其不可见等,请尝试这些解决方案。

    • 1.未加载加载项。**

未加载。加载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

    • 2.未加载加载项。**

仔细检查您是否拼写正确的注册表项。偶尔我键入行为,但在美国拼写是行为,所以仔细检查"加载行为"

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

    • 3.加载项不可见。**

要使加载项可见,请转到Excel〉文件〉选项〉加载项〉选择管理下拉列表并将其设置为COM加载项〉单击开始。在COM加载项对话框中,确保选中加载项。

    • 4.外接程序被禁用。**

加载项也可能因为已禁用而隐藏。您可以通过以下方式启用加载项:转到Excel〉文件〉选项〉加载项〉选择管理下拉列表并将其设置为禁用,然后单击开始。选择已禁用的加载项,然后单击启用。

      1. ExcelDNA用户定义公式未正确呈现**

您看到的不是单元格值:#姓名?
设置以下注册表项:

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

使用正确的值:

/R "C:\Program Files\XYZ\XYZ Addin\ExcelDNA.XYZAddIn.xll"
      1. 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警报提示**

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

    • 将VSTO警报记录到日志文件**

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

owfi6suc

owfi6suc4#

我建议使用一个名为AddinSpy的Microsoft工具来诊断插件问题。

ktca8awb

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/

cwtwac6a

cwtwac6a6#

这里还有另一种可能性,为什么你没有得到任何反馈,即使上面提到的环境变量被设置。我发现如果你得到这个错误后,安装(不是以前的VSTO已经工作),你也应该仔细检查注册表和 “清单” 条目,如果你有一个。
虽然Jeremy Thompson在第二个要点中指出了注册表,但他没有显示可能是注册表设置一部分的 Manifest 项。如果Manifest项没有指向正确的路径和文件,它将显示在加载项列表中,并显示为 “Not Loaded” 项。
这里我们看到一个只指向VSTO文件而没有路径的错误条目。

这将导致您的外接程序看起来像是加载了错误,但没有弹出任何错误,让您感到沮丧。因此,它看起来如下所示,请注意下面的位置条目也没有显示路径。

通过输入正确的路径沿着文件名来更正条目,它会修复这个问题。
我假设没有错误是因为您最初没有指向任何东西,所以它列出了AddIn,因为它在注册表中,即使没有要加载的东西。

8ftvxx2r

8ftvxx2r7#

最后,我说服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][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)

相关问题