部署VSTO后,Excel COM-Add-in崩溃

时间:2014-03-24 20:29:08

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

我最近使用VS2010在C#中开发了一个Excel COM-addin,它使用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)
{

}

1 个答案:

答案 0 :(得分:0)

通常,出于以下原因,Excel加载项可能会因启动Excel而崩溃:

  1. 加载项的启动中有代码,而不是try / catch 封装。
  2. 启动代码需要预期文件中不存在的配置或Web服务URL。
  3. 代码遇到不同的运行时条件(实际部署的计算机)与在Visual Studio环境中运行它,并安装了预期的权限/办公室安装/ .net版本等。
  4. 您可以检查一下您的启动代码,并通过将其包装在通用的try / catch块中来查找可能的异常吗?

    您也可以在此处发布代码段,我们也可以帮助识别。

    P.S。一般建议是将启动代码保持在最小值(如果不是零)。这是因为如果加载时间超过特定值,现代版本的office应用程序(例如outlook)实际上会禁用加载项。