Office 解决方案部署疑难解答

适用于: Visualstudio

本文介绍如何解决部署 Office 解决方案时可能会遇到的常见问题。

本文中的信息适用于文档级项目,Visual Studio Tools for Office (VSTO) 外接程序项目。 请参阅 Office 应用程序和项目类型提供的功能

使用事件查看器排查 Office 解决方案问题

可以使用 Windows 中的事件查看器查看安装或卸载 Office 解决方案时Visual Studio Tools for Office运行时捕获的错误消息。 可以使用事件日志器中的这些消息来解决安装和部署问题。 有关详细信息,请参阅 Office 解决方案的事件日志记录

更改程序集名称会导致冲突

如果在部署解决方案后,在 Project Designer的“应用程序”页中更改了“程序集名称”值,发布工具将修改安装程序包,以包含一个 Setup.exe 文件和两个部署清单。 如果部署两个清单文件,可能会出现以下情况:

  • 如果最终用户同时安装这两个版本,应用程序将加载这两个 VSTO 外接程序。
  • 如果在程序集名称更改之前安装了 VSTO 外接程序,则最终用户将永远不会收到更新。

若要避免这些情况,请不要在部署解决方案后更改解决方案的 “程序集名称” 值。

检查更新需要很长时间

Visual Studio 2010 Tools for Office 运行时提供了一个注册表项,管理员可以使用它来设置用于下载清单和解决方案的超时值。

如何设置超时值

  1. 在注册表中,导航到以下项:

    HKEY_CURRENT_USER\Software\Microsoft\VSTA

  2. AddInTimeout 子项中,设置超时值(以毫秒为单位)。

    如果 AddInTimeout 子项不存在,请将其创建为 DWORD。

无法更新或发布到网络文件共享

如果在发布更新的过程中锁定了解决方案 的Setup.exe 文件,则网络文件共享上的 Office 解决方案可能会在更新期间显示误导性消息。 消息可能显示以下内容:“无法将'setup.exe'添加到 Web。 此 Web 中已存在文件'setup.exe'。”

为了帮助防止文件锁定,可以将共享设置为只读的最终用户。 但是,如果文档位于共享上,它们也会对最终用户变为只读。

未安装 Microsoft Office 的先决条件

可以将.NET Framework、Visual Studio Tools for Office运行时和 Office 主互操作程序集添加到安装包中,作为随 Office 解决方案一起部署的先决条件。 有关如何安装主互操作程序集的信息,请参阅 配置计算机以开发 Office 解决方案如何:安装 Office 主互操作程序集

使用 Localhost 发布可能会导致安装问题

使用 http://localhost 作为文档级解决方案的发布或安装位置时, 发布向导 不会将字符串转换为真实的计算机名称。 在这种情况下,必须在开发计算机上安装解决方案。 若要使已部署的解决方案在开发计算机上使用 IIS,请使用所有 HTTP/HTTPS/FTP 位置的完全限定名称,而不是 localhost。

已加载缓存的程序集,而不是更新的程序集

Fusion 是.NET Framework程序集加载程序,在项目输出路径位于网络文件共享上时加载程序集的缓存副本,该程序集使用强名称进行签名,并且自定义项的程序集版本不会更改。 如果更新满足这些条件的程序集,则下次运行项目时不会显示更新,因为已加载缓存副本。

可以配置 Visual Studio,以便 Fusion 每次运行项目时都会下载程序集。

如何下载程序集而不是加载缓存副本

  1. 在菜单栏上,依次选择“项目<”、“项目名称>属性”。
  2. “应用程序 ”页上,选择“ 程序集信息”。
  3. 程序集版本的修订号(第三个字段)设置为野生卡 (*) 。 例如,“1.0.*”。 然后选择“ 确定” 按钮。

更改程序集版本后,可以继续使用强名称对程序集进行签名,Fusion 将加载最新版本的自定义项。

注意

从 Visual Studio 2017 开始,如果尝试在程序集版本中使用通配符,将发生生成错误。 这是因为程序集版本中的通配符会中断 MSBuild 确定性功能。 系统将指示你从程序集版本中删除通配符,或禁用确定性。 若要了解有关确定性功能的详细信息,请参阅: 通用 MSBuild 项目属性自定义生成

当 URI 的字符不是 US-ASCII 时,安装失败

将 Office 解决方案发布到 HTTP/HTTPS/FTP 位置时,路径不能包含任何不在 US-ASCII 中的 Unicode 字符。 此类字符可能会导致安装程序中的不一致行为。 对安装路径使用 US-ASCII 字符。

在开发计算机上发布并安装解决方案时,系统会显示手动卸载提示

生成 Office 解决方案时,将自动注册生成版本。 如果之前已将同一解决方案发布并安装到开发计算机,Visual Studio Tools for Office运行时检测到在下次生成、重新生成或发布解决方案后,已发布版本和生成版本的安装路径不同。 错误消息显示“无法安装自定义项,因为当前已安装另一个版本,无法从此位置升级。每当重新生成解决方案时,注册表项将更新。 因此,在发布、调试或运行新版本之前,必须卸载以前的版本。

若要防止显示消息,请在开发计算机上创建另一个用户帐户来测试部署。 或者,在下次发布、调试或重新生成解决方案之前,可以从计算机上已安装的程序列表中卸载版本。

安装解决方案时出现未捕获的异常或方法未找到错误

通过打开部署清单 (.vsto 文件) 、Office 应用程序、文档或工作簿来安装 Office 解决方案时,可能会出现以下条件的错误消息:

  • 找不到方法。
  • MissingMethodException。
  • 未捕获的异常。

若要防止这些错误消息,请运行安装程序来安装解决方案。

在不运行安装程序的情况下安装解决方案时,安装程序不会检查或安装必备组件。 安装程序会检查必备组件的正确版本,并根据需要进行安装。

生成 InstallShield Limited Edition 项目后加载项更改的清单注册表项

生成 InstallShield Limited Edition 项目时,作为 VSTO 外接程序安装程序的一部分的清单注册表项有时会从 .vsto 更改为 .dll.manifest

若要解决此问题,请在其他解决方案中创建 InstallShield Limited Edition 项目,或使用 CompanyName.AddinName 作为包含 VSTO 外接程序名称的注册表项的值。

Office 解决方案的 ClickOnce 安装程序不会安装主互操作程序集

运行 ClickOnce 为 Office 解决方案创建的安装程序时,仅当尚未安装任何 PIA 时,Office 主互操作程序集的安装程序 (PIA) 运行。

如果安装程序未正确安装 PIA,请通过从安装目录运行名为 o2007pia.msi 的安装程序文件来手动安装它们。

重新安装 Office 解决方案会导致参数范围外异常

重新安装 Office 解决方案时,可能会出现异常 ArgumentOutOfRangeException ,并显示以下错误消息:指定的参数已超过有效值的范围。

如果安装位置的 URL 的大小写不同,则会出现这种情况。 例如,如果从 http://fabrikam.com/ExcelSolution.vsto 第一次安装 Office 解决方案,然后第二次使用 http://fabrikam.com/excelsolution.vsto ,则会出现此错误。

若要防止显示消息,请在安装 Office 解决方案时使用相同的大小写。

无法通过从 Web 打开部署清单来安装 ClickOnce 解决方案

用户可以通过从 Web 打开部署清单来安装 Office 解决方案。 但是,某些安装 Internet Information Services (IIS) 阻止 .vsto 文件扩展名。 在使用它部署 Office 解决方案之前,必须在 IIS 中定义 MIME 类型。

有关如何在 IIS 7 中定义 MIME 类型的信息,请参阅 添加 MIME 类型 (IIS7)

将扩展名设置为 .vsto ,将 MIME 类型设置为 application/x-ms-vsto

References