排查 Office 解决方案部署问题

适用于: Visual Studio

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

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

使用事件查看器对 Office 解决方案进行故障排除

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

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

如果在部署解决方案后更改项目设计器的“应用程序”页中的“程序集名称”值,则发布工具将修改安装程序包,以便有一个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 办公室的先决条件

可以将 .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. 在菜单栏上,选择 “Project”、“ <ProjectName> 属性”。
  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 应用lication、文档或工作簿的错误消息:

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

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

在不运行安装程序的情况下安装解决方案时,安装程序不会检查或安装先决条件。 安装程序会检查是否存在正确版本的先决条件并根据需要安装它们。

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

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

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

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

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

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

重新安装 Office 解决方案会导致自变量范围异常

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

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

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

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

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

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

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

参考