调试办公室项目

可以使用用于其他 Visual Studio 项目的相同 Microsoft Visual Studio 工具调试办公室项目。 调试办公室项目时,Visual Studio 调试器功能(如在局部变量窗口中插入断点和查看变量的功能)也可用。 有关 Visual Studio 调试工具的详细信息,请参阅 Visual Studio 中的调试。

提示

若要简化调试,需在创建和调试应用程序前先关闭所有打开的 Office 应用程序实例。

适用于: 本主题中的信息适用于文档级项目和 VSTO 外接程序项目。 请参阅办公室应用程序和项目类型提供的功能。

注意

有兴趣开发跨多个平台扩展办公室体验的解决方案? 查看新的办公室外接程序模型。 与 VSTO 外接程序和解决方案相比,办公室外接程序的占用空间较小,可以使用几乎任何 Web 编程技术(如 HTML5、JavaScript、CSS3 和 XML)生成它们。

启动和停止调试器

可以像开始调试其他 Visual Studio 项目一样开始调试办公室项目;例如,可以按 F5 键。 开始调试 VSTO 外接程序项目时,将启动目标办公室应用程序的新进程,并加载 VSTO 外接程序。

当开始调试文档级项目时,文档或工作簿将在新的 Word 或 Excel 进程中打开。

当停止调试器时,调试器会突然终止应用程序进程或分离(如果将调试器设置为分离)。 在已终止的 Office 应用程序进程中打开的所有其他文档也将关闭而不发出警告,并且任何未保存的更改都将丢失。 这可能包括调试器运行时打开的所有文档或工作簿。

通常情况下,最好在停止调试器前从进程中分离,这样可以正常方式退出 Office 应用程序。 如果停止调试器后仍想使用打开的文档或工作表,还可先从进程中分离。

如果在调试 Word 的文档级自定义项时,反复停止调试器并引起 Word 突然关闭可能会导致损坏 Normal 模板。 如果发生这种情况,可以删除已损坏的 Normal 模板,该模板将在下次打开 Word 时自动重新创建。 但是,不会重新创建任何存储在 Normal 模板中的宏。

使用 Office 2013 或 Office 2016 调试 Office 2013 VSTO 外接程序

如果使用 Visual Studio 2015,并且同时安装了两个版本的 办公室,Visual Studio 将启动 办公室 2016。 如果使用 Visual Studio 2013,Visual Studio 将启动 办公室 2013。

如果想要使用不同的 Office 版本(2013 或 2016)调试 VSTO 外接程序,打开 “项目设计器”,然后在 “调试” 选项卡上选择 “启动外部程序” 选项按钮。 然后,浏览到相应的 Office 应用程序可执行文件的位置。

F10 和 F11 行为

开始调试办公室项目时,F10F11 的行为与开始调试其他 Visual Basic 或 C# 项目的行为不同。 在 Visual Basic 或 C# 项目中,调试器将在主函数中停止;在 Office 项目中,Visual Studio 无法控制 Office 应用程序的主函数。 但是,在调试期间, F10F11 具有与 Visual Basic 和 C# 项目中相同的功能。

显示异常

由于托管代码与非托管代码进行交互的方式,Visual Studio 不会显示 Microsoft Office 应用程序引发的错误。 例如,如果在 Visual Studio 中使用办公室开发工具创建的 VSTO 外接程序引发异常,Microsoft 办公室应用程序将继续不显示错误。 若要查看这些错误,将调试器设置为发生公共语言运行时异常时中断。 有关详细信息,请参阅 使用调试器管理异常。

如果将调试器设置为发生公共语言运行时异常时中断,则所有异常都将中断调试器,包括已处理的异常和一些源自运行时本身的最有可能的异常,而这些可能与项目无关。 未找出的有关 msosec 的错误将显示在每个项目中,但可以放心地忽略。 这些 msosec 异常不会影响解决方案。

还可在方法周围使用 Try...Catch 语句来捕获异常。

默认情况下,Visual Studio 也不会显示 Office 项目的实时调试错误;但可以启用此功能,这样可看到所引发的错误。 有关详细信息,请参阅 Visual Studio 中的实时调试。

命令行参数

如果“调试”属性页上的“启动操作”设置为“启动项目”,则即使已将命令行参数指定为启动选项,Visual Studio 也不会在调试项目时使用命令行参数。 如果要在开始调试时使用命令行参数,则必须选择启动项目以外的启动操作

源代码管理

调试属性不在源控件下的多个用户中共享。 Visual Basic 和 C# 项目的调试属性存储在特定于用户的文件(ProjectName.vbproj.user 或 ProjectName.csproj.user)中,但此文件不在源控件下。 如果有多个用户正在调试,则每个用户都必须手动输入调试属性。

在文档级项目中调试缓存的数据集

每次生成项目时,会清空并重新创建数据集。 如果想要调试缓存的数据集,则必须在 Visual Studio 外部打开文档,然后附加调试器。

基于 Word 97-2003 文档(*.doc)格式调试 Word 文档项目

若要基于 Word 97-2003 文档(/.doc*)格式调试 Word 文档项目,必须将项目文件夹添加到受信任的文件夹列表中。 有关如何执行此操作的详细信息,请参阅 授予对文档的信任。

调试禁用的加载项

Microsoft Office 应用程序可禁用行为异常的 VSTO 外接程序。 Microsoft Office 应用程序禁用 VSTO 外接程序以防止每次启动应用程序时加载有问题的代码。 但是,这也容易在典型的调试过程中导致意外行为。 有关如何重新启用 VSTO 外接程序的信息,请参阅 如何:重新启用已禁用的 VSTO 外接程序。

以下是 Microsoft Office 应用程序使用的两种禁用 VSTO 外接程序的类型:硬禁用和软禁用。

硬禁用

当 VSTO 外接程序导致应用程序意外关闭时,可能会发生硬禁用。 如果 VSTO 外接程序中的 Startup 事件处理程序正在执行时停止了调试器,则硬禁用也可能发生在开发计算机上。 硬禁用 VSTO 外接程序时,它将显示在 应用程序中的“已禁用项 ”列表中。

如果办公室应用程序硬禁用使用 Visual Studio 中的办公室开发工具创建的 VSTO 外接程序,则应用程序仅禁用导致失败的 VSTO 外接程序。 通过使用 Visual Studio 中的 Office 开发工具为该 Office 应用程序创建的其他 VSTO 外接程序将继续进行加载。

软禁用

当 VSTO 外接程序产生不会导致应用程序意外关闭的错误时,可能会发生软禁用。 例如,如果 Startup 事件处理程序正在执行时,某个应用程序引发了未处理异常,则此应用程序可能软禁用 VSTO 外接程序。 当 VSTO 外接程序处于软禁用状态时,它将显示在应用程序的“非活动应用程序外接程序”列表中,应用程序将更改 VSTO 外接程序的 LoadBehavior 注册表项的值,以指示它已卸载。 有关 LoadBehavior 注册表项的详细信息,请参阅 VSTO 外接程序的注册表项。

使用 事件查看器 排查安装错误

Visual Studio Tools for 办公室 运行时会将消息写入 Windows 中的事件查看器,以便在安装或卸载办公室解决方案时引发的所有异常。 你可使用这些消息来解决安装和部署问题。

使用日志文件和错误消息排查启动错误

用于办公室运行时的 Visual Studio 工具可以将启动过程中发生的所有错误写入日志文件,或在消息框中显示每个错误。 默认情况下,这些选项是关闭的。 可以通过创建环境变量来打开这些选项。

若要在消息框中显示每个错误,可创建一个名为 VSTO_SUPPRESSDISPLAYALERTS 的环境变量并将其设置为 0(零)。 可通过删除环境变量或将其设置为 1(一)来取消消息。

若要将错误写入日志文件,可创建一个名为 VSTO_LOGALERTS 的环境变量并将其设置为 1(一)。 Visual Studio Tools for 办公室 运行时在包含 VSTO 外接程序的部署清单的文件夹或包含与自定义项关联的文档或工作簿的文件夹中创建日志文件。 如果失败,Visual Studio Tools for 办公室 运行时会在本地 %TEMP% 文件夹中创建日志文件。 对于应用程序级 VSTO 外接程序,默认名称为 add-in name.vsto.log。 对于文档级项目,日志文件的名称为 document name.extension.log(如 ExcelWorkbook1.xlsx.log)。 若要停止记录错误,可删除环境变量,或将其设置为 0(零)。