可以使用用于其他 Visual Studio 项目的相同Microsoft Visual Studio 工具调试 Office 项目。 调试 Office 项目时,Visual Studio 调试器功能(如在 局部变量 窗口中插入断点和查看变量的功能)也可用。 有关 Visual Studio 调试工具的详细信息,请参阅 Visual Studio 中的调试。
小窍门
若要简化调试,请在生成和调试之前关闭 Office 应用程序的任何打开实例。
适用于: 本主题中的信息适用于文档级项目和 VSTO 外接程序项目。 请参阅 Office 应用程序和项目类型提供的功能。
注释
有兴趣开发跨多个平台扩展 Office 体验的解决方案? 查看新的 Office 加载项模型。 与 VSTO 外接程序和解决方案相比,Office 外接程序占用空间较小,可以使用几乎任何 Web 编程技术(如 HTML5、JavaScript、CSS3 和 XML)生成它们。
启动和停止调试器
可以像开始调试其他 Visual Studio 项目一样开始调试 Office 项目;例如,可以按 F5 键。 开始调试 VSTO 外接程序项目时,将启动目标 Office 应用程序的新进程,并加载 VSTO 外接程序。
开始调试文档级项目时,文档或工作簿将在新的 Word 或 Excel 进程中打开。
停止调试器时,调试器会突然终止应用程序进程,或者如果调试器设置为分离,则分离。 在终止的 Office 应用程序过程中打开的所有其他文档也会关闭,且不会发出警告,并且任何未保存的更改都将丢失。 这可能包括调试器运行时打开的所有文档或工作簿。
通常,最好在停止调试器之前从进程分离,以便可以正常退出 Office 应用程序。 如果仍希望在停止调试器后使用打开的文档或工作表,也可以先从进程中分离。
如果要为 Word 调试文档级自定义,重复停止调试器并导致 Word 突然关闭可能会导致 Normal 模板损坏。 如果发生这种情况,可以删除损坏的 Normal 模板,并在下次打开 Word 时自动重新创建它。 但是,不会重新创建存储在 Normal 模板中的任何宏。
使用 Office 2013 或 Office 2016 调试 Office 2013 VSTO 外接程序
如果使用 Visual Studio 2015,并且同时安装了两个版本的 Office,Visual Studio 将启动 Office 2016。 如果使用 Visual Studio 2013,Visual Studio 将启动 Office 2013。
如果要使用不同版本的 Office(2013 或 2016)调试 VSTO 外接程序,请打开 项目设计器,然后在 “调试 ”选项卡中,选择 “启动外部程序 ”选项按钮。 然后,浏览到相应 Office 应用程序可执行文件的位置。
F10 和 F11 行为
开始调试 Office 项目时, F10 和 F11 的行为与开始调试其他 Visual Basic 或 C# 项目的行为不同。 在 Visual Basic 或 C# 项目中,调试器在主函数上停止;在 Office 项目中,Visual Studio 无法控制 Office 应用程序的主要功能。 但是,在调试期间, F10 和 F11 具有与 Visual Basic 和 C# 项目中相同的功能。
显示异常
由于托管代码与非托管代码交互的方式,Visual Studio 不会显示由 Microsoft Office 应用程序引发的错误。 例如,如果在 Visual Studio 中使用 Office 开发工具创建的 VSTO 外接程序引发异常,Microsoft Office 应用程序将继续不显示错误。 若要查看这些错误,请将调试器设置为在公共语言运行时异常时中断。 有关详细信息,请参阅 使用调试器管理异常。
如果您将调试器设置为在公共语言运行时异常时暂停,那么所有异常现在都会进入调试器,包括您已处理的异常以及运行时本身的一些首次机会异常,这些可能与您的项目无关。 在每个项目中都会出现有关找不到 msosec 的错误,但可以放心地忽略。 这些 msosec 异常不会影响你的解决方案。
也可以在方法周围使用 Try...Catch 语句以捕获异常。
默认情况下,Visual Studio 也不会显示 Office 项目的即时调试错误,不过可以启用此功能,以便查看出现的错误。 有关详细信息,请参阅 Visual Studio 中的 Just-In-Time 调试。
命令行参数
如果“调试”属性页上的“启动作”设置为“启动项目”,则即使已将命令行参数指定为启动选项,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 外接程序中的事件处理程序执行时停止调试器,则在您的开发计算机上也可能发生此情况。 硬禁用 VSTO 外接程序时,它将显示在应用程序中 的“已禁用项 ”列表中。
如果 Office 应用程序硬禁用使用 Visual Studio 中的 Office 开发工具创建的 VSTO 外接程序,则应用程序仅禁用导致失败的 VSTO 外接程序。 使用 Visual Studio 中用于该 Office 应用程序的 Office 开发工具创建的其他 VSTO 外接程序将继续加载。
软停用
当 VSTO 外接程序出现错误,但没有导致应用程序意外关闭时,可能会发生软禁用。 例如,如果应用程序在事件处理程序 Startup 执行期间引发了未经处理的异常,则该应用程序可能会对 VSTO 外接程序进行软禁用。 当 VSTO 外接程序处于软禁用状态时,它将显示在应用程序的 “非活动应用程序 外接程序”列表中,应用程序将更改 VSTO 外接程序 的 LoadBehavior 注册表项的值,以指示它已卸载。 有关 LoadBehavior 注册表项的详细信息,请参阅 VSTO 外接程序的注册表项。
使用事件查看器排查安装错误
Visual Studio Tools for Office 运行时会将消息写入 Windows 中的事件查看器,用于在安装或卸载 Office 解决方案时记录由于抛出的任何异常而触发的事件。 可以使用这些消息解决安装和部署问题。
使用日志文件和错误消息排查启动错误
Visual Studio Tools for Office 运行时可以将启动过程中发生的所有错误写入日志文件,或在消息框中显示每个错误。 默认情况下,这些选项处于关闭状态。 可以通过创建环境变量来打开这些选项。
若要在消息框中显示每个错误,请创建一 VSTO_SUPPRESSDISPLAYALERTS 个名为并设置为 0(零)的环境变量。 可以通过删除环境变量或将其设置为 1(一个)来禁止消息。
若要将错误写入日志文件,请创建一 VSTO_LOGALERTS 个名为环境变量并将其设置为 1(一个)。 Visual Studio Tools for Office 运行时在包含 VSTO 外接程序部署清单的文件夹中或包含与自定义项关联的文档或工作簿的文件夹中创建日志文件。 如果失败,Visual Studio Tools for Office 运行时会在本地 %TEMP% 文件夹中创建日志文件。 对于应用程序级 VSTO 外接程序,默认名称为 外接程序名称.vsto.log。 对于文档级项目,日志文件的名称是 文档名称。扩展.log,例如 ExcelWorkbook1.xlsx.log。 若要停止日志记录错误,请删除环境变量或将其设置为 0(零)。