您可以调试 Office 项目使用用于其他 Visual Studio 项目的相同 Microsoft Visual Studio 工具。在调试 Office 项目时,Visual Studio 调试器功能,如插入断点和视图变量的功能在 局部变量 窗口,也可用。有关 Visual Studio 调试工具的更多信息,请参见使用 Visual Studio 进行调试。
![]() |
---|
简化调试,Office 应用程序的关闭所有打开的实例,在生成和调试前。 |
**适用于:**本主题中的信息适用于 Office 2013 和 Office 2010 的文档级项目和应用程序级项目。请参见按 Office 应用程序和项目类型提供的功能。
有关相关的视频演示,请参见 How Do I: Debug a VSTO Application?(如何实现:调试 VSTO 应用程序)。
启动和停止调试器
您可以开始调试一个 Office 项目象开始调试其他 Visual Studio 项目;例如,可以按 F5 键。当您开始调试一个应用程序级外接程序项目时,将针对 Office 应用程序的新进程启动,外接程序加载。当您开始调试一个文档级项目时,文档或工作簿在新的 Word 或 Excel 进程中打开。
在停止调试器时,调试器将无条件终止该应用程序进程或分离该进程(如果已将调试器设置为分离的话)。其他文档在终止的 Office 中打开应用程序进程也会关闭,而无需警告,因此,所有未保存的更改将丢失。其中可能包括在调试器运行期间打开的所有文档或工作簿。
通常,最好与进程分离的在停止调试器之前,因此,您可以出 Office 应用程序以常规方法。您可以先将调试器与进程分离,如果您仍要使用在停止调试器来打开文档或工作表。有关与进程分离的更多信息,请参见如何:分离所有进程。
如果反复停止调试 Word 的文档级自定义项,调试器和造成 Word 突然关闭可能会破坏 normal 模板。如果发生这种情况,您可以删除被破坏的 Normal 模板,它将在您下一次打开 Word 时自动重新创建。但是,存储在 Normal 模板中的所有宏都不会重新创建。
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 开发工具引发异常,Microsoft Office 应用程序将继续运行,而不显示错误。若要查看这些错误,请将调试器设置为在发生公共语言运行时异常时中断。有关更多信息,请参见如何:在引发异常时中断。
如果您在公共语言运行时异常设置调试器中断,所有异常都中断至调试器,包括您处理并从运行时的那些首次异常,可能不相关的与您的项目使用。指示未找到 msosec 的错误在每个项目中都会显示,但您可以忽略这些错误。这些 msosec 异常不会影响您的解决方案。
也可以在方法中使用 Try...Catch 语句来捕捉异常。
默认情况下,Visual Studio 也不会显示 Office 项目的实时调试错误;不过您可以启用这个功能,以便能够看到引发的错误。有关更多信息,请参见实时调试。
命令行参数
如果**“调试”属性页上的“启动操作”设置为“启动项目”,则 Visual Studio 不会在调试项目时使用命令行参数,即使已指定命令行参数作为启动选项。如果要在启动调试时使用命令行参数,必须选择“启动操作”而不是“启动项目”**。
源代码管理
在源代码管理下,调试属性不在多个用户间共享。Visual Basic 和 C# 项目在特定于用户的文件 (ProjectName.vbproj.user 或 .csproj.user) ProjectName存储调试属性,因此,此文件不受源代码管理。如果有多人正在调试,则每个人都必须手动输入调试属性。
调试在文档级项目中缓存的数据集中
每次生成项目时,都会清空并重新创建数据集。如果您想要调试缓存的数据集,必须在 Visual Studio 之外打开文档并将它附加到调试器。
调试基于 Word 97-2003 文档 (*.doc) 格式的 Word 文档
若要调试基于 Word 97-2003 文档 (*.doc) 格式的 Word 文档项目,您必须将项目文件夹添加到受信任文件夹列表。有关如何执行此操作的更多信息,请参见 向文档授予信任。
调试已禁用的外接程序
Microsoft Office 应用程序可能会禁用产生意外行为的外接程序。Microsoft Office 应用程序禁用外接程序以防止该应用程序每次启动时加载有问题的代码。但是,这也容易在典型的调试过程中导致意外行为。有关如何重新启用外接程序的信息,请参见如何:重新启用已禁用的外接程序。
Microsoft Office 应用程序对外接程序使用的禁用类型有两种:硬禁用和软禁用。
硬禁用
当外接程序导致应用程序意外关闭时,可能会发生硬禁用。如果在外接程序中的 Startup 事件处理程序正在执行时停止调试器,则也可能会在开发计算机上发生硬禁用。在外接程序被硬禁用后,它会显示在应用程序的**“禁用项目”**列表中。
如果 Office 应用程序硬禁用使用 Visual Studio 中的 Office 开发工具创建的外接程序,则该应用程序将只禁用导致故障的外接程序。使用 Visual Studio 中的 Office 开发工具为该 Office 应用程序创建的其他外接程序将继续加载。
软禁用
当外接程序产生的错误不会导致应用程序意外关闭时,可能会发生软禁用。例如,如果外接程序在 Startup 事件处理程序正在执行期间引发未经处理的异常,则应用程序可能会软禁用该外接程序。在外接程序被软禁用后,它会显示在应用程序的**“非活动应用程序外接程序”**列表中,并且应用程序会更改该外接程序的 LoadBehavior 注册表项值以指示它已卸载。有关 LoadBehavior 注册表项的更多信息,请参见应用程序级外接程序的注册表项。
使用事件查看器对安装错误进行疑难解答
Visual Studio Tools for Office Runtime 针对安装或卸载 Office 解决方案时引发的所有异常,将消息写入 Windows 中的事件查看器。可以使用这些消息来解决安装和部署问题。
使用日志文件和错误消息对启动错误进行疑难解答
Visual Studio Tools for Office Runtime 可将启动过程中发生的所有错误写入日志文件中,或者在消息框中显示每个错误。默认情况下,这些选项是禁用的。可以通过创建环境变量来启用这些选项。
若要在消息框中显示每个错误,请创建一个名为 VSTO_SUPPRESSDISPLAYALERTS 的环境变量,并将其设置为 0(零)。可以通过删除该环境变量或将其设置为 1(一)来取消显示消息。
若要将错误写入日志文件,请创建一个名为 VSTO_LOGALERTS 的环境变量,并将其设置为 1(一)。Visual Studio Tools for Office Runtime 创建日志文件在包含外接程序的部署清单的文件夹,或在包含文档或工作簿与自定义项的文件夹。如果失败,Visual Studio Tools for Office Runtime 在本地 %TEMP% 文件夹中创建日志文件。对于应用程序级外接程序,默认名称为 外接程序名称.vsto.log。对于文档级项目,日志文件的名称为 文档名称。扩展.log,例如 ExcelWorkbook1.xlsx.log。若要停止记录错误,请删除该环境变量或将其设置为 0(零)。