ms-word - Word VSTO在运行时吞没了异常而无需调试?

标签 ms-word vsto

将此代码放置在ThisDocument_Startup之外的Word文档级VSTO解决方案中的某个位置(创建带单击事件的功能区按钮):

int zero = 0;
int divideByZero = 10 / zero;


在不调试的情况下启动(Ctrl + F5),结果:吞没了异常,其余代码静默失败。

如果放置在ThisDocument_Startup中,则该异常将是可见的,但在其他任何地方都不会出现。微软的VSTO论坛和MSDN文档似乎都应该使用Try ... Catch-对于已知的未知数来说这并不重要。那未知的未知数呢?

处理托管代码未处理异常的所有常见方式似乎都无效,大概是因为VSTO将托管代码与Office COM Interops一起使用:

//These don't work
AppDomain.CurrentDomain.UnhandledException ...
System.Windows.Forms.Application.ThreadException ...


我已经阅读了有关VSTO代码故障排除的文章,这些文章似乎总是导致尝试...捕获几乎所有内容!

有什么更好的方法来处理已知和未知(现在是看不见的和无声的!)故障?

最佳答案

其实很容易,在运行Office应用程序之前将环境变量VSTO_SUPPRESSDISPLAYALERTS设置为0,然后Office将显示异常并且在出现问题时不会在启动过程中杀死您的加载项。

还有一个有用的powershell脚本,它将为您完成这类工作,并且在弄清VSTO在http://archive.msdn.microsoft.com/vstotroubleshooter处不起作用时非常方便
通过运行vstotroubleshooter.ps1 setdbg开始,它将为您设置VSTO_SUPPRESSDISPLAYALERTS env变量

关于ms-word - Word VSTO在运行时吞没了异常而无需调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018745/

相关文章:

windows - 在Word Doc文件中递归查找带通配符的字符串,输出到文本文件,如何去掉Word垃圾?

c# - 从功能区按钮访问 Excel 工作表

c# - 从 DataTable 创建 Excel 数据透视表

vb.net - 无法从 Outlook.MailItem 中删除附件

.NET Core 中的 VSTO

c# - 以中等 UAC 完整性级别运行 CLR 应用程序?

vba - 使用多个不连续选择

java - 如何在 Java 中使用 Apache POI 将项目符号点添加到 word 文档

VBA Access - 在 Word 文档中查找和替换文本

c# - 在 ASP.NET 中创建 Word 文档并返回给用户