【问题标题】:Excel COM-Add-in crash after deploying VSTO部署 VSTO 后 Excel COM 加载项崩溃
【发布时间】:2014-03-25 05:58:58
【问题描述】:

我最近使用 VS2010 在 C# 中开发了一个 Excel COM 插件,它使用对远程 Web 服务的 Web 引用,并向服务发送数据和从该服务发送数据。根据要求完成此操作后,我按照步骤here 将其安装在多台客户端计算机上。

根据规范构建 msi 后,我在外部计算机上安装了加载项。安装成功完成后,我尝试启动 excel 并崩溃。经过进一步调查,我设法找到了包含这段代码的 Windows 错误报告 (WERInternalMetadata.xml) 文件。

<ProblemSignatures>
    <EventType>CLR20r3</EventType>
    <Parameter0>excel.exe</Parameter0>
    <Parameter1>14.0.6126.5003</Parameter1>
    <Parameter2>505b0834</Parameter2>
    <Parameter3>AddInTestExcel2007</Parameter3>
    <Parameter4>1.0.0.0</Parameter4>
    <Parameter5>53304e03</Parameter5>
    <Parameter6>42</Parameter6>
    <Parameter7>16</Parameter7>
    <Parameter8>System.NullReferenceException</Parameter8>
</ProblemSignatures>

当我在 Visual Studio 上调试我的加载项时,我没有收到 NullReference 异常。除此之外,我没有其他关于导致 excel 崩溃的信息。有人可以帮我解释一下吗?

编辑 - 插件启动代码

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{

}

private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{

}

【问题讨论】:

    标签: c# excel visual-studio-2010 vsto add-in


    【解决方案1】:

    通常,Excel 加载项可能会在 Excel 启动时崩溃,原因如下:

    1. 加载项启动中有代码不是try/catch 封装。
    2. 启动代码需要配置或 Web 服务 URL,这些 URL 不存在于预期文件中。
    3. 代码遇到不同的运行时条件(实际部署的机器)与在具有预期权限/已安装办公室/已安装 .net 版本等的 Visual Studio 环境中运行代码。

    您能否检查您的启动代码并通过将其包装在通用 try/catch 块中来查找可能的异常?

    您也可以在此处发布 sn-p,我们也可以帮助识别。

    附言一般建议是将启动代码保持在最低限度,如果不是零的话。这是因为如果加载时间超过特定值,则现代版本的 Office 应用(如 Outlook)实际上会禁用加载项。

    【讨论】:

    • 感谢您的回复。我的加载项中的启动代码为零。但是我的加载项使用了 app.config,因为它使用了 Web 服务 ServiceReference1.SNLSoapClient dp1 = new ServiceReference1.SNLSoapClient("SNLSoap");。有些东西告诉我它可能是这条线。在上一篇文章和这篇文章之间,我发现我指的是带有 localhost URL 的 Web 服务,当我尝试在其他计算机上安装加载项时显然失败了。我将 URL 更改为具有完整的 IP 地址,但随后它在实例化中使用了端点地址,这是 app.config 的一部分
    • 我没有明确地将 app.config 与 msi 一起打包,这是要求吗?
    • 你在使用 app.config 文件吗?如果是,它可能无法在运行时正常工作,因为加载项在 excel.exe 上下文下运行。如果你不使用 app.config,那么当然,你不需要打包它们。
    • 是的。最肯定我正在使用app.config。这基本上是为了确保/覆盖 VS 中的默认肥皂设置,以允许与我的 Web 服务进行大量数据传输。如何确保我的 app.config 在部署之前与我的 vsto 一起打包?或者我可以使用 app.config 的解决方法吗?
    • 好的。你能验证这个问题吗? blogs.msdn.com/b/vsod/archive/2011/06/14/…
    猜你喜欢
    • 2019-11-26
    • 2011-03-27
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多